ruby-on-rails - 升级到 Rails 2.3.5 并且预加载停止工作?

标签 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) 

找不到该列的原因是因为我想要包含的表都没有包含在内?据我所知,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/

相关文章:

ruby-on-rails - 现有 Heroku 应用程序上的 Ruby 2.1.0

ruby-on-rails - 查明用户是否已退出 Gmail/Google(使用或不使用 Google API)

javascript - 在同一页面上呈现新建/创建和编辑/更新表单

mysql - 如何将每条记录或行按降序存储到rails数据库中?

ruby-on-rails - 我应该将文件保存为文本还是导入数据库?

javascript - 从数据表中获取多选行 html 数据

sql - 如何在Rails中执行类似于find_in_batches_by_sql的操作

ruby-on-rails - rails 3,如何在组中设置 user.role#create 操作

ruby-on-rails - 如何将数字添加到我的井字游戏程序的顶部?

ruby-on-rails - 如何使用 Rails 通过 Web 套接字发送二进制文件