我刚刚升级到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)
找不到该列的原因是因为我想要包含的表都没有包含在内?据我所知,find 语句的语法在最新版本的 Rails 中仍然是正确的,那么是什么给出了呢?
最佳答案
问题不在于我的包含声明,而在于条件。在旧版本的 Rails 中,这样做是可以的
conditions => " company_id = 10 "
其中 company_id 是 include 语句中的一个表中的列。这不再起作用,您现在需要包含表名称。我猜是因为 Rails 现在做了一些奇特的解析。这就是现在对我有用的方法。
conditions => " users.company_id = 10 "
关于ruby-on-rails - 升级到 Rails 2.3.5 并且预加载停止工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1963774/