【发布时间】:2014-09-16 12:48:42
【问题描述】:
我正在尝试在我的应用程序中集成名为 slim_scrooge 的 gem,但我不断遇到一些奇怪的问题,即出现以下错误
NoMethodError:未定义的方法reverse' for nil:NilClass
from /Users/ratatouille/.rvm/gems/ruby-1.9.3-p547@minerva/gems/activerecord-3.2.10/lib/active_record/connection_adapters/abstract/database_statements.rb:11:inblock in to_sql'
经过仔细调试,我发现错误是在 arel 上的 .to_sql 上产生的。
为了找到我在这个line上添加断点的原因
然后我发现了这个
## 首次运行
Performer.find(1985)
From: /Users/Ratatouille/.rvm/gems/ruby-1.9.3-p547@minerva/gems/activerecord-3.2.10/lib/active_record/relation.rb @ line 171 ActiveRecord::Relation#exec_queries:
166:
167: default_scoped = with_default_scope
168:
169: if default_scoped.equal?(self)
170: @records = if @readonly_value.nil? && !@klass.locking_enabled?
=> 171: binding.pry
172: eager_loading? ? find_with_associations : @klass.find_by_sql(arel, @bind_values)
173: else
174: IdentityMap.without do
175: eager_loading? ? find_with_associations : @klass.find_by_sql(arel, @bind_values)
176: end
[1] pry(#<ActiveRecord::Relation>)> arel.to_sql
=> "SELECT `performers`.* FROM `performers` WHERE `performers`.`id` = ? LIMIT 1"
## 第二次运行同一记录
Performer.find(1985)
From: /Users/ratatouille/.rvm/gems/ruby-1.9.3-p547@minerva/gems/activerecord-3.2.10/lib/active_record/relation.rb @ line 171 ActiveRecord::Relation#exec_queries:
166:
167: default_scoped = with_default_scope
168:
169: if default_scoped.equal?(self)
170: @records = if @readonly_value.nil? && !@klass.locking_enabled?
=> 171: binding.pry
172: eager_loading? ? find_with_associations : @klass.find_by_sql(arel, @bind_values)
173: else
174: IdentityMap.without do
175: eager_loading? ? find_with_associations : @klass.find_by_sql(arel, @bind_values)
176: end
[1] pry(#<ActiveRecord::Relation>)> arel.to_sql
NoMethodError: undefined method `reverse' for nil:NilClass
from /Users/ratatouille/.rvm/gems/ruby-1.9.3-p547@minerva/gems/activerecord-3.2.10/lib/active_record/connection_adapters/abstract/database_statements.rb:11:in `block in to_sql'
我很生气,为什么第二次 arel.to_sql 不起作用
任何人都有线索
更多信息 -
- Rails 3.2.10
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 activerecord arel