【问题标题】:concatenating columns within ActiveRecord :where call in rails在 ActiveRecord 中连接列:在 rails 中调用
【发布时间】:2012-06-19 22:10:46
【问题描述】:

我正在尝试查询数据库,因为在这个问题Rails gem rails3-jquery-autocomplete: How do I query multiple fields 中谈到了 rails3-jquery-autocomplete gem

User.select("first_name, last_name, login, id").where(["CONCAT_WS(' ', first_name, last_name, login) LIKE ?", "%#{parameters[:term]}%"])

这对于我需要它做的事情很好,但我觉得在我的 rails 应用程序中使用显式 MYSQL 代码很脏,我想知道是否有一种与数据库无关的方式来制定上述查询?如果没有,是否存在不支持某种连接功能的数据库?

我不能使用虚拟属性,因为 gem 需要查询数据库。

另外,我打算向用户模型本身添加一个名为 full_name 的额外列,并使用虚拟属性将其分隔为 first_name 和 last_name,但我更喜欢另一种解决方案。

【问题讨论】:

    标签: mysql ruby-on-rails activerecord


    【解决方案1】:

    我会按照你的方式去做。虚拟属性在我看来 一个很好的解决方案。因此,您可以将数据库与您的 应用逻辑。考虑改变你的数据库后端。

    恕我直言

    否则 - 选择字段中的连接是否具有别名工作?

    类似 concate( firstname, ' ', ... ) as virtualfieldname ...?

    【讨论】:

      【解决方案2】:

      感谢 wkaha 提供建议。事实证明这是一个非常愚蠢的问题。在阅读了一些 ActiveRecord 之后,我了解到我无法使用它来使用 LIKE 修饰符进行查询,这对我来说至关重要,所以我保持原样。如果我最终切换到 Postgres,我会将其更改为管道连接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-30
        • 1970-01-01
        • 2016-08-10
        相关资源
        最近更新 更多