带有命名范围的脏对象?

时间:2011-05-27 04:39:31

标签: mysql ruby-on-rails ruby

如何使用具有命名范围的脏对象?

这个named_scope工作正常。

 named_scope :recently_tested, lambda{|test_id|
    {
      :conditions =>  ["test_id = ? and status = ?",test_id,PUBLISHED],
      :order => "updated_at DESC"
    }
  }

我想加强它。像

这样的东西
 named_scope :recently_tested, lambda{|test_id|
    {
      :conditions =>  ["test_id = ? and status = ? and status_was = ?",test_id,PUBLISHED,PUBLISHED],
      :order => "updated_at DESC"
    }
  }

是否可以在named_scope中使用脏对象?还有其他方法可以处理这种情况吗?

1 个答案:

答案 0 :(得分:2)

更改帮助程序函数status_was实际上不是数据库中的字段。

更改对象后,changeschanged?和其他助手(例如status_was)只会保留,直到您保存对象为止。

如果您希望此功能持续存在,则必须将status_was字段添加到模型中,并将其填充到before_save中。我不会称它为status_was,因为你将覆盖辅助函数。