2011-01-07 95 views
0

導軌 - 創建或更新記錄....如果聲明VS尋找或創造由

@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方法有內它的更新屬性能力。

回答

6

再次,你應該做的find_or_create_by_interest_id_and_score

+0

我的錯誤...未知的關鍵( s):得分,興趣?你以前見過這個嗎? – ChrisWesAllen 2011-01-07 00:30:42

2

如果我不是你想要達到這樣做的方式是什麼誤認是:

find_or_create_by_interest_id(:interest => interest.id) { |u| u.score = 1 }