在我的rails用户模型中,我正在尝试编写一个方法,该方法将返回当前时间范围的列表,并且在没有该时间范围的列表的情况下,创建一个与用户关联的方法,然后返回它:
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!(::foo =&gt;'bar')时,用户关联是否未填充?
我决定通过在创建中明确分配用户来解决这个问题!打电话,如:
self.lists.create!( :date => today.to_date, :User_ID = self.id)
然而这个解决方案似乎并不合适。
提前感谢并一如既往地为愚蠢,冗余或措辞严厉的问题道歉。
答案 0 :(得分:1)
我会做这样的事情:
def todays_list
lists.find_or_create_by_date(Date.today)
end
方法名称更改只是首选项。