Ruby on Rails查询等于两个连接列

Can*_*yer 3 ruby ruby-on-rails ruby-on-rails-5

我的客户模型具有first_namelast_name领域.我可以使用以下代码查询模型:

Customer.where(first_name: "John").where(last_name "Doe")
Run Code Online (Sandbox Code Playgroud)

但是,我想查询这样的模型:

Customer.where(full_name: "John Doe")
Run Code Online (Sandbox Code Playgroud)

但是我没有full_name列.如何在不创建full_name字段的情况下实现此目的?

max*_*max 8

您可以在SQL中使用CONCAT运算符:

Customer.where("CONCAT(first_name, ' ', last_name) = ?", full_name)
Run Code Online (Sandbox Code Playgroud)

如果您使用like/ilike创建类似搜索功能的东西,这实际上可能有意义:

Customer.where("CONCAT(first_name, ' ', last_name) LIKE ?", "%#{full_name}%")
Run Code Online (Sandbox Code Playgroud)