我正在使用Ruby on Rails在运行的应用程序上通过重构处理情况。
在该应用上,我有一个可以将其个人资料设为有效/无效的用户。
在用户上,我也有他的生日。对于所有13岁以下的用户,帐户都需要具有“无效”之类的行为。
我刚刚向用户模型添加了一个is_active布尔属性。
问题是:我不想重构我对应用程序上的用户的所有查询,添加
User.where(is_active: true).where(age > 13)
亲手操作所有型号
我想使用其他技术,例如User模型或控制器中的回调函数。
你觉得什么?
答案 0 :(得分:1)
default_scope是您想要的,如果您不想更改已编写的查询但想添加默认条件
class User < ActiveRecord::Base
default_scope { where(is_active: true).where("age > 13") }
end
注意:不建议使用default_scope
,因此请您做相应的研究
解决方案2:
您将必须在用户表上所有要查询的地方添加一次范围
class User < ActiveRecord::Base
scope :active, -> { where(is_active: true).where("age > 13") }
end
并使用它
User.active.where(...)
您可能需要在加入模型时处理以上条件