Ruby on rails Rails经历了很多困难

Ruby on rails Rails经历了很多困难,ruby-on-rails,model,associations,Ruby On Rails,Model,Associations,我只是不明白为什么这个协会不起作用。。。我很确定这没问题,但是找不到打字错误 class Lesson < ActiveRecord::Base has_many :lessons_units, :foreign_key => "lesson_id", :dependent => :destroy has_many :units, :through => :lessons_units end class Un

我只是不明白为什么这个协会不起作用。。。我很确定这没问题,但是找不到打字错误

class Lesson < ActiveRecord::Base
  has_many :lessons_units, :foreign_key => "lesson_id",
                           :dependent => :destroy
  has_many :units, :through => :lessons_units
end

class Unit < ActiveRecord::Base
  has_many :lessons_units, :foreign_key => "unit_id",
                           :dependent => :destroy
  has_many :lessons, :through => :lessons_units
end


class LessonsUnits < ActiveRecord::Base
  attr_accessible :lesson_id, :unit_id

  belongs_to :unit
  belongs_to :lesson

  validates :unit_id, :presence => true
  validates :lesson_id, :presence => true
end
结果:

uninitialized constant Unit::LessonsUnit

我终于明白了。这是因为我的链接模型以“s”结尾,rails将其转换为单数形式。注意到了这一点,因为错误显示的模型没有使用's'-Unit::LessonsUnit而不是Unit::LessonsUnits

编辑与的关系:lessons\u Units修复了它。。。我将仔细检查并将模型重命名为非复数形式

LessonsUnits-
LessonsUnits - 

class LessonsUnits < ActiveRecord::Base
类LessonsUnits
应为单数:

class LessonsUnit < ActiveRecord::Base
class LessonsUnit
您应该研究如何使用。它不会解决这个问题,但它会简化您的代码。我相信has_和_besive_to_从3.1开始很多都会贬值,所以我尽可能避免使用它。但我同意它的简洁性。据我所知,在联接表中存储额外数据(即超过两个ID的任何内容)是不推荐的,但关联类型不是。这本书里没有关于反对的内容。仔细阅读,你是对的。在规定的等待期后,您可以接受自己的答案。可以说,在标题中编辑“已解决”并不是一个解决方案。当然,奖励那些试图帮助你的人总是很好的。将来,在上下文中解释你的问题会对你有好处。在这种情况下,试图将问题从控制器中抽象出来,会导致另一个不相关的问题,这似乎是问题的核心。很高兴你把问题解决了。谢谢你抽出时间回答。我真的很感激。在回到控制台之前,我确实在控制器上花了大约一个小时的时间,我想我在尝试简化时需要更加小心。:)你应该接受你自己的答案;你自己解决的:)上面说我两天内不能接受。所以我不想浪费任何人的时间来这里。不管怎样,他都做对了。
LessonsUnits - 

class LessonsUnits < ActiveRecord::Base
class LessonsUnit < ActiveRecord::Base