ruby-on-rails - 在Rails中为所有事件记录模型添加查找条件

标签 ruby-on-rails activerecord find conditional-statements

无论如何,是否要向所有 Activity 记录模型添加查找条件?

那就是我想要这个查询

ExampleModel.find :all, :conditions=> ["status = ?", "active"]

表现与
ExampleModel.find :all

在每个模型中

谢谢!!

最佳答案

您可以使用 default_scope :

class ExampleModel < ActiveRecord::Base
  default_scope :conditions => ["status = ?", "active"]
end

如果要在所有模型中都使用它,则可以子类化ActiveRecord::Base并从其派生所有模型中的代码(可能不适用于单表继承):
class MyModel < ActiveRecord::Base
  default_scope :conditions => ["status = ?", "active"]
end
class ExampleModel < MyModel
end

...或者您可以在default_scope本身上设置ActiveRecord::Base(如果您决定一个模型不应该具有此默认范围,可能会很烦人):
class ActiveRecord::Base
  default_scope :conditions => ["status = ?", "active"]
end
class ExampleModel < ActiveRecord::Base
end

正如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.

关于ruby-on-rails - 在Rails中为所有事件记录模型添加查找条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1326743/

相关文章:

mysql - 如何在 Rails 中使用自定义 mysql 列类型 - varbinary(16)

ruby-on-rails - Rails 迁移生成默认时间戳(created_at、updated_at)为 NULLABLE

MySQL:删除连续的重复值

c# - Unity - 在列表中找不到对象

ruby-on-rails - 是否可以将 best_in_place 与 twitter bootstrap 中的 typeahead 一起使用?

ruby-on-rails - 用于多词搜索的 Rails 事件管理过滤器

linux - 使用查找结果作为另一个进程的命令行参数

ruby-on-rails - 在哪里修补Rails ActiveRecord::find()以便首先检查内存中的集合?

ruby-on-rails - rails : Dynamically selecting an attribute for comparison

ruby-on-rails - Redactor Rails - 无法上传文件