小编JD *_*ton的帖子

我可以使用ActiveRecord范围作为实例方法吗?

我有一个作为过滤器的范围.例如:

class User
  scope :in_good_standing, -> { where(:some_val => 'foo', :some_other_val => 'bar' }
end
Run Code Online (Sandbox Code Playgroud)

因为in_good_standing依赖于多个条件,我想在以下实例上User定义:

def in_good_standing?
  some_val == 'foo' && some_other_val == 'bar'
end
Run Code Online (Sandbox Code Playgroud)

但是,我真的想避免重复实例方法和命名范围之间的逻辑.有没有办法以#in_good_standing?简单引用范围的方式定义?

编辑

我意识到这些是非常不同的概念(一个是类方法,一个是实例方法),因此我的问题.正如@MrDanA在评论中提到的,我能得到的最接近的是检查我好奇的记录是否存在于更大的范围内,这可能是我正在寻找的答案.

关于从我的示例中分离出不同范围的响应是有用的,但我正在寻找一种适用于应用程序的通用模式,其中一些非常复杂的逻辑由作用域驱动.

activerecord named-scope ruby-on-rails

13
推荐指数
2
解决办法
8737
查看次数

标签 统计

activerecord ×1

named-scope ×1

ruby-on-rails ×1