将Rails自定义SQL查询映射到ActiveRecord模型

mat*_*sko 2 activerecord ruby-on-rails

我正在设置一个自定义查询,它使用一系列OR语句和BETWEEN语句以及最后一个GROUP BY id HAVING COUNT(*)> =#{tolerance}.更不用说INNER和LEFT加入操作了.

我认为不可能使用活动记录进行设置.所以我使用Model.connection.select_all()命令来触发查询.这有效,但是如何不将所有行映射到该特定模型?

die*_*mes 9

如果您使用Rails 3和ARel,Rails非常强大.如果您真的可以使用rails编写查询,我不会感到惊讶.

但是,总是有时候需要编写原始SQL.

要做到这一点,而不是使用Model.connection Model.find_by_sql(QUERY_STRING).

这样,查询将自动为您解析,只需确保您 select "model.*"

  • 这可能是最好的解决方案,如果您使用PostgreSQL,可能需要为此查询创建一个视图:请参阅[KnowSQL presentation](http://knowsql.heroku.com/#1)之间的幻灯片70和72 (2认同)