我正在尝试查询数据库,因为这个问题Rails gem rails3-jquery-autocomplete: How do I query multiple fields中讨论过rails3-jquery-autocomplete gem {/ 3>
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,但更喜欢其他解决方案。
答案 0 :(得分:2)
我会按照你的方式去做。虚拟属性在我看来 一个非常好的解决方案因此,您可以将数据库与您的数据库分离 应用逻辑。考虑改变你的db后端。
IMHO
否则 - 是选择字段中的别名是否有别名?
像concate(firstname,'',...)这样的虚拟域名...?
答案 1 :(得分:2)
感谢wkaha提供建议。事实证明这是一个非常愚蠢的问题。在ActiveRecord上阅读了一些内容之后,我了解到我无法使用它来查询对我来说至关重要的LIKE修饰符,所以我保持原样。如果我最终切换到Postgres,我只会将其更改为管道连接。