如何将 SQL 字符串解析为 rails Arel 对象

mat*_*aso 5 sql ruby-on-rails arel ruby-on-rails-3

在编写了一些大而复杂的 SQL 语句之后,我曾问过如何使用 Rails 以更好的方式完成它。但是我最终再次使用了 Arel,因为如果我调用“find_by_sql”,我将无法嵌套更多条件。

Questions.find_by_sql(HUGE_SQL).by_filter(:popular).order('created_at').limit(5)
Run Code Online (Sandbox Code Playgroud)

我的目标是:

  • 在单独的文件中组织 sql
  • 将这些字符串 sql 转换为 Arel 对象
  • 使用常见的可重用条件(例如“限制、顺序、..”)嵌套此 arel 对象

谢谢

Dan*_*ohn 0

解决方案是使用神奇的scuttle.io将复杂的 SQL 查询转换为 Arel。然后,您可以为查询的每个部分创建单独的方法,并且仍然能够将它们组合在一起。更多详细信息请参见本演示文稿