【问题标题】:Use instance variables defined in model to a record将模型中定义的实例变量用于记录
【发布时间】:2021-06-15 22:28:01
【问题描述】:
我有一个包含 first_name 和 last_name 的 users 表。我在用户模型中定义了 full_name 如下
def full_name
[first_name, last_name].join(' ')
end
有没有办法可以使用 full_name 在 Rails 控制台中查找记录,例如
User.find_by(full_name: "Jack Astor")
【问题讨论】:
标签:
ruby-on-rails
ruby
ruby-on-rails-5
【解决方案1】:
您应该考虑创建自己的函数,例如:
def find_by_full_name(name)
where("first_name || ' ' || last_name = ?", name).first
end
如果你真的想使用 find_by(:full_name),你将不得不猴子路径 find_by:
class User < ApplicationRecord
def self.find_by(*args)
if args.first.key?(:full_name)
where("first_name || ' ' || last_name = ?", args.first[:full_name]).where(args.first.except(:full_name)).take
else
super(*args)
end
end
end