【发布时间】:2011-06-26 19:59:25
【问题描述】:
我有用户模型,我在用户模型中有关注
def name
last_name.blank? ? first_name : "#{first_name} #{last_name}"
end
如何将 find_by_name 函数添加到 User 模型以便我可以这样做:
User.find_by_name("Peter Smith")
【问题讨论】:
标签: ruby-on-rails
我有用户模型,我在用户模型中有关注
def name
last_name.blank? ? first_name : "#{first_name} #{last_name}"
end
如何将 find_by_name 函数添加到 User 模型以便我可以这样做:
User.find_by_name("Peter Smith")
【问题讨论】:
标签: ruby-on-rails
我认为您可以使用 named_scope 来做到这一点
Jim 和 NAD 对这个类似问题 Rails virtual attribute search or sql combined column search 的回答可能是一个好的开始。
【讨论】:
attr_acessible :name 使name 像一个常规的实例变量,可以简单地以name 或self.name 访问。现在,我猜你可以做 User.find_by_name('somename');
【讨论】:
你可以使用它。将姓名分成两部分,first_name 和 last_name 并搜索它们
named_scope :find_by_name, lambda {|name| {:conditions => ["first LIKE '%?%' or last LIKE'%?%'", name.split(' ').first, name.split(' ').last]}}【讨论】:
named_scope :find_by_name, lambda {|name| {:conditions => ["first_name = ? or last_name = ?", name.split(' ').first, name.split(' ').last]}}