我想知道這是爲什麼不爲我工作:Ruby on Rails的:「find_create_by_user」
Recipe.find_or_create_by_user_id(current_user.id, :name => "My first recipe")
創建該配方罰款,如果不通過用戶的ID存在,但名稱(「我的第一個配方「)不包含在新創建的條目中。有什麼我做錯了嗎?我無法完全理解這一點。
我想知道這是爲什麼不爲我工作:Ruby on Rails的:「find_create_by_user」
Recipe.find_or_create_by_user_id(current_user.id, :name => "My first recipe")
創建該配方罰款,如果不通過用戶的ID存在,但名稱(「我的第一個配方「)不包含在新創建的條目中。有什麼我做錯了嗎?我無法完全理解這一點。
你可以試試這個一對夫婦不同的方式:
Recipe.find_or_create_by_user_id_and_name(current_user.id, "My first recipe")
Recipe.find_or_create_by_user_id(:user_id => current_user.id, :name => "My first recipe")
試試這樣說:
Recipe.find_or_create_by_user_id(current_user.id) do |recipe|
recipe.name = 'My first recipe'
end
塊將只被調用,如果它有創造紀錄。
謝謝Tadman。我不知道。非常感謝! – Drew 2009-10-06 20:42:23
您有沒有機會在食譜模型中使用attr_accessible或attr_protected?如果名稱不可訪問,那麼當您通過批量分配將其傳入時,它不會按預期分配。
我相信這可以解釋爲什麼tadman的方法有效,而你的原始嘗試沒有。如果名稱不是你有嚴重的安全問題,你可以考慮通過attr_accessible公開它。
謝謝,邁克爾。如果用戶決定在未來改變食譜的名稱會怎樣? – Drew 2009-10-06 20:41:31