1

我正在尝试查询数据库,因为Rails gem rails3-jquery-autocomplete: How do I query multiple fields

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

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

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

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

4

2 回答 2

2

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

恕我直言

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

像 concate( firstname, ' ', ... ) as virtualfieldname ...?

于 2012-06-20T08:00:31.980 回答
2

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

于 2012-06-22T20:32:33.167 回答