我有
@user = User.find(1)
@event = Event.find(1)
for interest in @event.interests
@user.choices.create(:interest => interest, :score => 1)
end
Run Code Online (Sandbox Code Playgroud)
工作正常,但每次都会创建记录.我想检查是否存在具有来自for循环的相应interest_id的记录,如果它存在,我想更新,否则创建就好了.
我环顾四周,找到了"find_or_create_by"方法,但它并不适合我.我有=>
@user.choices.find_or_create_by_interest(:interest => interest.id, :score => 1)
Run Code Online (Sandbox Code Playgroud)
并得到错误"未定义的方法`find_by_interest'".
你能看出我做错了什么吗?或者坚持使用if/else语句会更好吗?
我不确定find_or_create_by方法是否具有更新属性功能.
| 归档时间: |
|
| 查看次数: |
9330 次 |
| 最近记录: |