在我的rails用戶模型中,我試圖編寫一個方法,它將返回當前時間框架的列表,並且在沒有對於那個時間段列表,創建一個其與用戶相關聯,然後返回它:在rails用戶模型中調用ActiveRecord :: Create()而不是將新對象與用戶關聯
class User < ActiveRecord::Base
def todaysList
today = Time.new
if self.lists.where(:date => today.to_date)
return self.lists.where(:date => today.to_date).first #Get the object, not the ActiveRecord::Relation
else
self.lists.create!(:date => today.to_date) #Make the list, return it!
end
end
我的問題是,爲什麼當我打電話self.lists.create(:富=>'酒吧'),用戶關聯沒有被填充?
我決定解決這個更馬虎的方法,通過顯式分配創建用戶!呼叫,因此:
self.lists.create!(:date => today.to_date, :User_ID = self.id)
但是,這種解決方案似乎並不正確。
在此先感謝您,並且一如既往地爲愚蠢,多餘或措辭不佳的問題道歉。
您所顯示的代碼*應該在其創建的列表上設置user_id。你看到的是什麼讓你覺得它不是? – Emily
我可以通過查看導軌控制檯中生成的對象來判斷它沒有填充。列表的索引視圖顯示了當前列表,每次調用視圖時,都將調用用戶模型中的todaysList方法,找不到與滿足要求的當前用戶關聯的列表,然後創建一個新列表。所以每次刷新列表索引視圖時,當前列表的ID都會增加。奇怪的。 – Chazu