【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-21
      相关资源
      最近更新 更多