Ruby on Rails中的自定义getter

Ton*_*ony 2 getter ruby-on-rails

我有一个拥有_may:people的MailingList模型

对于我的大多数应用程序,我只想让那些活跃的人

所以@mailing_list.people应该只返回活跃的人

在我的模型中,我做不到

def people
  self.people.find_all{ |p| !p.activated_at.nil? }
end
Run Code Online (Sandbox Code Playgroud)

因为这一直在呼唤着自己.什么是ruby/rails自动过滤人的方式.另一个可能的问题是我认为self.people返回一个活动记录对象数组,self.people.find_all...返回一个数组.这将导致我的一些代码中断.这很容易修复,但有没有办法返回活动的记录对象?有选择会很高兴.

谢谢!

hgm*_*mnz 6

这是命名范围的完美示例:

class Person < ActiveRecord::Base
  named_scope :active, :conditions => 'activated_at is not null'
end
Run Code Online (Sandbox Code Playgroud)

然后就叫它:

# equivalent to Person.find(:all, :conditions => 'activated_at is not null')
@active_people = Person.active 
Run Code Online (Sandbox Code Playgroud)