如何编写ActiveRecord查询,该查询将返回具有重复虚拟属性的所有记录?
例如,假设user.rb模型具有以下虚拟属性:
def fullname
"#{first_name} #{last_name}"
end
如何获取具有相同fullname
的所有用户?
答案 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')