获取具有重复虚拟属性的所有记录

时间:2014-03-20 13:53:33

标签: ruby-on-rails ruby activerecord

如何编写ActiveRecord查询,该查询将返回具有重复虚拟属性的所有记录?

例如,假设user.rb模型具有以下虚拟属性:

def fullname
  "#{first_name} #{last_name}"
end

如何获取具有相同fullname的所有用户?

1 个答案:

答案 0 :(得分:0)

您可以使用Arel功能在ruby中编写一些mysql函数

def self.fullname_col
  Arel::Nodes::NamedFunction.new "CONCAT_WS", [ ' ', arel_table[:first_name], arel_table[:last_name] ]
end

scope :fullname, ->(name) { where(fullname_col.eq(name)) }

然后你可以搜索这个范围

User.fullname('Your name')