我刚刚升级到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语句的语法仍然正确,那么是什么给出了?
答案 0 :(得分:3)
问题不在我的包含声明中,而是在条件中。在较旧版本的rails中,可以这样做
conditions => " company_id = 10 "
其中company_id是include语句中某个表中的列。这不再起作用,您需要立即包含表名。我猜是因为rails现在做了一些花哨的解析。这对我现在有用。
conditions => " users.company_id = 10 "