次の例を見てみましょう。
GroupMember.where(:member_id => 4).first_or_initialize
もし私がこんなことを言いたかったら、
member_id が 4 の GroupMember が存在する場合は、それを「検索」します。それ以外の場合は、member_id が 4 で、group_id が 7 の GroupMember を作成します。
したがって、上記のステートメントでは、member_id のみをチェックし、存在しない場合は、複数の属性を持つ GroupMember を作成するようにしたいと思います。どのように記述すればよいでしょうか? Rails 4.0 を使用しています。
ベストアンサー1
これも機能します:
GroupMember.where(member_id: 4).first_or_initialize(group_id: 7)
first_or_initialize に渡される属性は、新しいレコードを作成するときにのみ使用され、"where" 句の属性と結合されます。