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