В Rails 4 вы можете сделать:
GroupMember.find_or_create_by(member_id: 4, group_id: 7)
И использование where
отличается:
GroupMember.where(member_id: 4, group_id: 7).first_or_create
Это вызовет create
на GroupMember.where(member_id: 4, group_id: 7)
:
GroupMember.where(member_id: 4, group_id: 7).create
Напротив, find_or_create_by(member_id: 4, group_id: 7)
будет вызывать create
на GroupMember
:
GroupMember.create(member_id: 4, group_id: 7)
Пожалуйста, смотрите этот соответствующий коммит на рельсах / рельсах.