Rails模型忽略来自其他表的其他特别选择的列

时间:2017-06-28 02:08:51

标签: ruby-on-rails ruby activerecord

这与read_sql密切相关,但这个问题还不够深入。

根据上面的问题,我有一个复杂的查询是从我的一个ActiveRecord模型运行的,它会生成一种报告'。它基本上是主要模型属性的巨大表格,以及相关表格中的一些其他属性。

  • 查询本身有效。我已经验证了生成的SQL正确执行,当粘贴到SQL终端时,我得到结果(和我想要的列)。不幸的是,模型中有专有信息,我无法在这里分享,而查询过于复杂,无法进行模糊处理。但是要了解我在做什么,这是我的ActiveRecord查询的开始:permits = Permit.select('*').joins("LEFT JOIN crosstab (' ....

  • 我已将ActiveRecord Query(上图)粘贴到Rails控制台中,不仅完美执行;但是可以查询其他属性(不是我的应用程序中的任何模型或关联),只是没问题 - 正是我想要的:

    >> permits.first.applicant_name
    "Gordon Ramsay"

问题是当我在rails app中执行代码(从浏览器执行)时,我可以访问每个许可证及其相关模型的属性,但是许可证上的附加选择会引发NoMethodError。

我无法理解为什么Rails控制台会让我插入命令并工作,但是当我仅使用我的应用程序的方法运行相同的代码时,会引发错误。

上面的问题似乎与此密切相关,并且接受的答案建议在控制台中尝试一些事情;但为什么控制台和Rails应用程序本身会以不同的方式处理相同的代码(因为我假设Rails控制台 是Rails应用程序的一个实例?

有谁知道:

  1. 我对ActiveRecordRelation的假设是否忽略了非模型属性?
  2. 为什么Rails控制台允许我执行此查询并调用额外的'选定的列但Rails不会。
  3. 有没有办法可以做我需要做的事情 - 可能是创建一个代理对象或将Permit模型转换为其他一些不会忽略/删除的ActiveRecord对象。 select?
  4. 的额外属性

0 个答案:

没有答案