在Ruby on Rails 3中为模型中的所有查找添加条件

时间:2013-09-18 14:05:44

标签: database-design activerecord model rails-activerecord

尝试在google上搜索所有内容,但无法在Ruby on rails上找到与CakePHP的beforeFind()回调类似的内容。

所以我目前有一个新闻模型。

    class News < NewsRecord
    end

新闻模型的查找方法已经在网站周围的许多地方用于各地的控制器中。我现在已经为新闻模型添加了一个publish_web(boolean)列。

我想在此新闻模型中添加一个条件,该条件会添加到此模型上发生的所有查找条件中。所以像这样:

    class News < NewsRecord
        :conditions => {:published_web => true}
    end

1 个答案:

答案 0 :(得分:0)

您可能想要使用范围,其中一种方法是

class News < NewsRecord
  scope :published, where(published_web: true)
end

这将允许您执行News.published并将返回符合范围内条件的所有记录。

其他方法是设置default_scope,它将News中的条件“替换”default_scope表中的所有提取(请记住,这可能是“危险“)。

class News < NewsRecord
  default_scope where(published_web: true)
end