【发布时间】:2011-06-05 00:28:31
【问题描述】:
我有
@user = User.find(1)
@event = Event.find(1)
for interest in @event.interests
@user.choices.create(:interest => interest, :score => 1)
end
工作正常,但每次都会创建记录。我想检查是否存在具有来自 for 循环的相应interest_id 的记录,如果存在我想更新,否则创建就可以了。
我环顾四周,发现了“find_or_create_by”方法,但它对我并没有真正的工作。我有 =>
@user.choices.find_or_create_by_interest(:interest => interest.id, :score => 1)
并得到错误“未定义的方法`find_by_interest'”。
你能看出我做错了吗?还是坚持使用 if/else 语句更好?
我不确定 find_or_create_by 方法是否具有更新属性功能。
【问题讨论】:
标签: ruby-on-rails