【发布时间】:2015-11-12 17:09:15
【问题描述】:
在将我的 rails 应用程序从 3.2 升级到 4.1.13 之后,我的一个查询似乎没有让 ActiveRecord 可以使用别名列(我认为)。如果我运行 .to_sql 并使用该 SQL 进行查询,我可以清楚地看到正在返回的别名列,但是当我尝试像以前那样访问它们时,我得到 undefined method 错误。
我不确定如何解决此问题。
查询是通过 Ransack 搜索和一些 Squeel 连接构建的。
search_result = search.result.in_current_club_type.
joins{role.outer}.joins{contact.outer}.for_current_or_last_year.with_fellowship.
select(<<-SQL
people.id, people.last_name, people.first_name, people.parent_only, clubs.name AS club_name,
roles.name AS role_name, tlt, master_guide, pla, grade, people.type, people.email,
contacts.primary_phone AS phone
SQL
)
我需要访问的别名是role_name、club_name 和phone。我在此之后放置了一个binding.pry 并尝试search_result.first.role_name,返回的错误是
NoMethodError: undefined method `role_name' for #<Member:0x007fa8bcf121d0>
我可以将它们转换为实例方法,但如果可能的话,我希望能够继续使用现有的做事方式。
感谢您的指导。
【问题讨论】:
标签: mysql ruby-on-rails ruby ransack squeel