我在Rails中有一个代表商店的模型
class Store < ActiveRecord::Base
此模型中的布尔字段“draft”确定记录是否处于活动状态,或者它是否只是草稿。 我正在使用acts_as_xapian在我的应用程序中进行搜索,它会收到一个应该执行搜索的模型。这部分正在运作。但是,我只想对活动的项目(draft == false)
运行搜索我不确定如何限制act_as_xapian的搜索,但是我也可以通过创建一个新模型来做同样的事情,该模型只包含类Store中的项目,并且草稿== false。
最初我以为我可以使用带有find的方法
def self.active
find :all, :conditions => {:draft => false}
end
但acts_as_xapian真的想要一个模型。
有什么建议吗?
答案 0 :(得分:3)
您可以为此创建范围以简化调用:
named_scope :bloqueado,
:conditions => { :bloqueado => true }
这意味着您可以随时调用范围:
Store.bloqueado.all
从风格问题来看,我认为你的逻辑是倒置的。通常,最好设置布尔字段来表示肯定断言,例如“已发布”而不是类似于真实含义“未发布”或草稿的内容。这为您提供了“已发布”/“未发布”的逻辑对,而不是“草稿和未发布”/“不草稿,未发布”。