2011-02-14 43 views
0

我有用户模式和我在用户模式要添加find_by_到模型的虚拟属性

def name 
    last_name.blank? ? first_name : "#{first_name} #{last_name}" 
end 

我如何添加find_by_name功能给用户模式,使我能做到这一点如下:

User.find_by_name("Peter Smith") 

回答

0

attr_acessible :name使name像一个常规的实例变量,可以明显地访问nameself.name。现在,我想你可以做User.find_by_name('somename');

+1

我还以为在这些线路上,并试图it..but它没有工作.. – rubyprince 2011-02-14 11:10:30

+0

对我也没有工作,得到了一个`未知的密钥错误。 – 2012-03-16 16:43:58

1

您可以使用它。拆分名分成两个部分,如first_name和last_name和搜索他们

 
named_scope :find_by_name, lambda {|name| {:conditions => ["first LIKE '%?%' or last LIKE'%?%'", name.split(' ').first, name.split(' ').last]}}