我有一些模型的create語句,但它創建連接表內的記錄,無論記錄是否已存在。在Rails中,更新記錄或創建新記錄的最佳方式是什麼?
這裏是我的代碼如下所示:
@user = User.find(current_user)
@event = Event.find(params[:id])
for interest in @event.interests
@user.choices.create(:interest => interest, :score => 4)
end
的問題是,它創造的記錄,不管是什麼。我希望它只在沒有記錄存在的情況下才創建記錄;如果記錄確實存在,我希望它將所找到的記錄的屬性加上或減去1.
我一直在四處看看有什麼東西叫做find_or_create_by
。當它發現一條記錄時,它做了什麼?我希望它取當前的:score
屬性並添加1.
是否可以通過id
查找或創建?我不確定我會找到什麼屬性,因爲我正在查看的模型是隻有id
外鍵和score屬性的連接模型。
我試圖
@user.choices.find_or_create_by_user(:user => @user.id, :interest => interest, :score => 4)
,但得到
未定義的方法
find_by_user
我應該怎麼辦?
是CURRENT_USER已經是用戶模型的實例?如果是這樣,你不需要重新找到它,只需使用`current_user`而不是`@user = ...`。 – 2011-01-07 05:30:02