升级到Rails 2.3.5和Eager加载停止工作?

时间:2009-12-26 16:49:10

标签: ruby-on-rails

我刚刚升级到rails 2.3.5并且发现了一个令人兴奋的加载的find语句,之前工作正常,突然停止了工作。

Advertisement.find :all, :include => [{:user => :contact}, {:apartment => {:building => :address}}], :conditions => [query_info[1]], :order => query_info[0]

这是我得到的错误

Mysql::Error: Unknown column 'company_id' in 'where clause': SELECT * FROM `advertisements` WHERE (company_id = 10 AND on_market = 1) 

找不到列的原因是因为包含的所有表都没有包括在内?据我所知,在最新版本的rails中,find语句的语法仍然正确,那么是什么给出了?

1 个答案:

答案 0 :(得分:3)

问题不在我的包含声明中,而是在条件中。在较旧版本的rails中,可以这样做

conditions => " company_id = 10 " 

其中company_id是include语句中某个表中的列。这不再起作用,您需要立即包含表名。我猜是因为rails现在做了一些花哨的解析。这对我现在有用。

conditions => " users.company_id = 10 "