【问题标题】:Dirty object with named scope?具有命名范围的脏对象?
【发布时间】:2023-03-14 08:56:01
【问题描述】:

如何在命名范围内使用脏对象?

这个 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 中使用脏对象?还有其他方法来处理这种情况吗?

【问题讨论】:

    标签: mysql ruby-on-rails ruby


    【解决方案1】:

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

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

    如果您希望这种情况持续存在,您必须将 status_was 字段添加到您的模型中,然后简单地将其填充到 before_save 中。不过我不会称它为 status_was,因为你会覆盖辅助函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      相关资源
      最近更新 更多