【发布时间】:2012-03-06 23:40:32
【问题描述】:
如何将 ActiveRecord 对象数组上的过滤器转换为 作用域?
例如转这个:
Users.all.collect { |u| u.has_super_powers? }
进入:
scope :supers, #something here
关键是它可以用作范围,因此 Users.all 并不总是“all”,例如:
Users.undeleted.supers.find_by_this('that')
我认为也许在作用域中使用 lambda 表达式是一种方法,但我认为这行不通,因为我无权访问记录,因为表达式已添加到数据库查询中,而不是作为后步运行结果。
【问题讨论】:
-
什么是
has_super_powers?作用域仅适用于数据库内的数据,而不适用于 Ruby 方法。
标签: ruby-on-rails ruby-on-rails-3 activerecord