从rails用户模型中调用ActiveRecord :: Create(),而不是将新对象与用户关联

时间:2011-09-16 20:03:42

标签: ruby-on-rails-3 activerecord

在我的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)

然而这个解决方案似乎并不合适。

提前感谢并一如既往地为愚蠢,冗余或措辞严厉的问题道歉。

1 个答案:

答案 0 :(得分:1)

我会做这样的事情:

def todays_list
  lists.find_or_create_by_date(Date.today)
end

方法名称更改只是首选项。