ruby-on-rails - 在 Rails 4 中使用 `CONCAT` w/Arel

标签 ruby-on-rails ruby ruby-on-rails-4 arel

我有一个 User 模型,它具有 first_namelast_name 属性。使用 Arel 我想使用 CONCAT 执行全名搜索。我已经阅读了 How do I use functions like CONCAT(), etc. in ARel? 上的帖子这表明这是可能的,但我不能完全正确地使用语法。到目前为止我有

class User < ActiveRecord::Base
  def self.search(query)
    concat = Arel::Nodes::NamedFunction.new 'concat', [arel_table[:first_name], arel_table[:last_name]]
    where ...?
  end
end

最佳答案

对于最新的 Arel,需要使用 Arel::Nodes.build_quoted(' ') 而不仅仅是 String (' ')。所以现在的答案是:

SEPARATOR = Arel::Nodes.build_quoted(' ')

Arel::Nodes::NamedFunction.new(
  'concat',
  [arel_table[:first_name], SEPARATOR, arel_table[:last_name]]
)

关于ruby-on-rails - 在 Rails 4 中使用 `CONCAT` w/Arel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20431714/

相关文章:

javascript - 带回调的 Rails reCAPTCHA

Ruby 如何合并两个标题略有不同的 CSV 文件

ruby - 如何像 Ruby 中的 Objective-C 类别一样向现有类添加方法?

ruby-on-rails - 如何使用 postgresql 验证 Rails 中的重叠时间

ruby-on-rails - Rails 和 MiniTest : add additional folder

ruby-on-rails - 在 Rails 中使用命名空间模型和 Controller 的问题

ruby-on-rails - Rails中Redis队列处理异步任务

ruby - 如何使用 RSpec stub Array 实例方法

ruby-on-rails - 安装生成器不会看到我定义的方法

ruby-on-rails - 使用序列化时如何构建哈希?