最佳答案
active-record中有一个方便的动态属性find_or_create_by:
Model.find_or_create_by_<attribute>(:<attribute> => "")
但是,如果我需要通过多个属性查找find_or_create,该怎么办呢?
假设我有一个模型来处理组和成员之间的M:M关系,称为GroupMember。我可以有许多实例,其中member_id = 4,但我从来不想超过一个实例,其中member_id = 4和group_id = 7。我想弄清楚是否有可能做这样的事情:
GroupMember.find_or_create(:member_id => 4, :group_id => 7)
我意识到可能有更好的方法来处理这个问题,但我喜欢find_or_create思想的便利性。