Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 的NoMethodError有许多:虽然(未定义的方法类名称为nil:NilClass)_Ruby On Rails_Activerecord - Fatal编程技术网

Ruby on rails 的NoMethodError有许多:虽然(未定义的方法类名称为nil:NilClass)

Ruby on rails 的NoMethodError有许多:虽然(未定义的方法类名称为nil:NilClass),ruby-on-rails,activerecord,Ruby On Rails,Activerecord,最近,当我调用organization.subscriptions NoMethodError at /organizations/1 undefined method `class_name' for nil:NilClass Did you mean? class_eval 看起来类名称是在不存在的东西上调用的。但既然有交易和订阅,这就不应该发生。我一直在看我的代码,但我看不出错误。有人能帮忙吗 # organization.rb class Organization < Appl

最近,当我调用
organization.subscriptions

NoMethodError at /organizations/1
undefined method `class_name' for nil:NilClass
Did you mean?  class_eval
看起来类名称是在不存在的东西上调用的。但既然有交易和订阅,这就不应该发生。我一直在看我的代码,但我看不出错误。有人能帮忙吗

# organization.rb
class Organization < ApplicationRecord
  has_many :deals
  has_many :subscriptions, through: :deals, source: :initialized_subscriptions
end

# deal.rb
class Deal < ApplicationRecord
  belongs_to :organization
  has_many :initialized_subscriptions, foreign_key: :initial_deal_id, class_name: 'Subscription'
end

# subscription.rb
class Subscription < ApplicationRecord
  belongs_to :initial_deal, class_name: 'Deal'
end

非常感谢你们的帮助,伙计们

这是一个盲目的尝试,但我认为Rails在您的
中假设了一个不同的类名,有许多关联

#在本例中,Rails采用类名:“Subscription”
有很多:订阅
#在本例中,Rails还采用类名:“Subscription”
有很多:订阅,通过::交易
#但在本例中,我认为Rails假定类名称为:“InitializedSubscription”
拥有多个:订阅、通过::交易、源::已初始化的订阅
也许试试这个

有很多:订阅,通过::交易,
源::已初始化订阅,
类名:“订阅”

谢谢您的快速回答。虽然Rails从关联名称推断类名,但是
subscriptions
变为
Subscription
source
不应该对
class\u name
产生影响。不过,您对
class\u name
的提示将我推向了正确的方向。我有另一个
有很多:通过
订阅
模型中声明的关联。显然,Rails无法从那里的
:deals
推断
Deal
。不知道为什么。
organizations    
+----+----------+
| id |   name   |
+----+----------+
|  1 | Org name |
+----+----------+

deals
+----+------------+-----------------+
| id |    name    | organization_id |
+----+------------+-----------------+
|  1 | First Deal |               1 |
+----+------------+-----------------+

subscriptions
+----+-----------------+
| id | initial_deal_id |
+----+-----------------+
|  1 |               1 |
+----+-----------------+