質問: rails初心者です。 ActiveRecordで、whereなどの条件を指定するコード の記載方法でつまずいております。 例えば、IDが偶数のデータのみを表示するという条件は、 どのようにコントローラのアクション内で記載してあげればよいのでしょうか・・・・ また、合わせて教えていただければなのですが、 bind create_with distinct eager_load extending from 上記のように沢山のメソッドが用意されていますが、 この技術はどのような形で利用されているのでしょうか? イマイチピンとこないので質問させていただきました。
回答: 本題に入る前置きですが、データベースの`id`列、とりわけRailsでのように勝手に生成するものは、基本的に「同じ値」の条件以外に使うことはお勧めできません(単に、レコードを識別するだけのもので、それ以上の意味をもたせるべきものではありません)。「`id`の偶数だけ」取得したい、というのはそういう意味で「行儀の良くない」処理です。 さらに具合の悪いことに、剰余演算はデータベースごとに統一されていないので、使うDBに合わせて書きつける必要が出てきてしまいます。MySQLでは`MOD(id, 2)`でも`id % 2`でも受け付けますが、SQLiteでは後者だけですし、前者だけのDBエンジンもあります。 とりあえず、SQLで条件を指定するには、`ModelClass.where('SQL文での条件')`のようにすれば動くことは動きます。