スコープを用いてif条件をシンプルにする(翻訳)|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社エンジニアの「?」を「!」に。原著者の許諾を得て翻訳・公開いたします。スコープを用いてif条件をシンプルにする(翻訳)シンプルなスコープを使ってif条件を簡単にできる状況はとてもよく見かけます。サンプルのクラスでやり方をご覧にいれます。:postsによって各ユーザーが複数のpostsを持つことができます。NotificationServiceは、ユーザーが新しく投稿を作成したときに簡単なメールメッセージでユーザーにリマインダーを送信するのに用いられます。ここではusers.posts.any?をチェックする必要はありません。いうのも、これはデータベースレベルで行われるからです。postsを持つユーザー向けのスコープを作成してみましょう。}endスコープはクラスメソッドとして定義することも可能であり、どちらにするかはあなた次第です。どちらにすべきかよくわからない方は、モデルのクエリをカプセル化する2つの方法をご覧ください。これで更新されたデータベースクエリが使えるようになり、条件をリファクタリングできるようになりました。:companyendコードがぐっとシンプルかつ短くなりました。クエリが自らの挙動を語るようになりました。ほんのささやかなリファクタリングですが、この違いは大きいものです。この方法は、今後ユーザーがpostsを持つかどうかを決定する責務を持つコードを変更するときにも役立つのが嬉しい点です。変更前の方法では、ユーザーがpostsを持つかどうかをあちこちでチェックしなければなりませんでしたが、変更後の新しい方法ならUserモデルのスコープを変更するだけで済みます。上の変更は、belongs_to関連付けのクエリのリファクタリングにも関連します。連絡用フォームにてお気軽にお問い合わせください。テスティングのスキルの重要性にお気づきでしょうか?テストを正しく書き始めることが、唯一のファーストステップです。Developmentの無料ebook』をどうぞお役立てください。コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。チュートリアル第2版の監修および半分程度を翻訳、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れて更新翻訳中。enno.jpを運営。実は最近Go言語が好きで、Goで書かれたRubyライクなGoby言語のメンテナーでもある。仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。Storageを使ってはいけない(翻訳)#Tags#会社紹介#自社サービス#勉強会#Rails#PHP#デザイン#実績#週刊RailsウオッチCONTACTお気軽にご相談ください。(翻訳)CONTACTTechRachoでは、パートナーシップをご検討いただける方からのご連絡をお待ちしております。お気軽にご意見・ご相談ください。