ste*_*ard 6 activerecord ruby-on-rails find conditional-statements
反正有没有为所有Active记录模型添加查找条件?
这是我想要这个查询
ExampleModel.find :all, :conditions=> ["status = ?", "active"]
Run Code Online (Sandbox Code Playgroud)
表现得和...一样
ExampleModel.find :all
Run Code Online (Sandbox Code Playgroud)
在每个模型中
谢谢!!
mol*_*olf 17
你可以使用default_scope:
class ExampleModel < ActiveRecord::Base
default_scope :conditions => ["status = ?", "active"]
end
Run Code Online (Sandbox Code Playgroud)
如果你想在你的所有模型中使用它,你可以在所有模型中子类化ActiveRecord::Base并从中派生(可能不适用于单表继承):
class MyModel < ActiveRecord::Base
default_scope :conditions => ["status = ?", "active"]
end
class ExampleModel < MyModel
end
Run Code Online (Sandbox Code Playgroud)
...或者你可以设置default_scope上ActiveRecord::Base本身(如果您认为一个模型不应该有此默认范围可能是恼人的):
class ActiveRecord::Base
default_scope :conditions => ["status = ?", "active"]
end
class ExampleModel < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)
正如在评论klochner提到的,你可能还需要考虑增加一个named_scope到ActiveRecord::Base,命名active,例如:
class ActiveRecord::Base
named_scope :active, :conditions => ["status = ?", "active"]
end
class ExampleModel < ActiveRecord::Base
end
ExampleModel.active # Return all active items.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4393 次 |
| 最近记录: |