在rails应用程序中动态添加named_scopes

时间:2012-08-10 13:41:37

标签: ruby-on-rails ruby named-scope dynamic-finders

就像rails中的动态查找器方法一样,有没有办法为关联模型提供动态查找器方法?

考虑以下模型

class User
   attr_accessible :name, :phone_no
   has_many :notes
end

class Note
   belongs_to :user
   attr_acccessible :note
end

如何从User对象调用note属性的动态查找器?

1 个答案:

答案 0 :(得分:1)

范围是类方法,因此User.scope_name(更多关于范围:http://guides.rubyonrails.org/active_record_querying.html#scopes)。如果要查找属于该用户对象的特定注释,可以定义实例方法 - 如下所示:

def note_with_content(content_string)
   self.notes.where(:content => "#{content_string}")
end

def last_note
   self.notes.last
end

并按以下方式使用:

@user.note_with_content("This is a note")

@user.last_note