【发布时间】:2015-12-17 09:29:15
【问题描述】:
我有两个模型,如下所示:
module MainModule
module SubModule
class Home < ActiveRecord::Base
has_many :rooms
end
end
end
module MainModule
module SubModule
class Room < ActiveRecord::Base
belongs_to :home
end
end
end
如果我执行以下操作,我会收到错误:
> home.rooms << room
=> NameError: uninitialized constant Room
(Failed)
> home.rooms
=> #<ActiveRecord::Associations::CollectionProxy []>
(Success)
但如果我更新 Home 模型:
..
has_many :rooms, class_name: "MainModule::SubModule::Room"
..
> home.rooms << room
=> #<MainModule::SubModule::Room id: 1, ...>
由于某种原因,我可以获得关联的房间,但无法分配新房间。我在这里错过了什么?
【问题讨论】:
-
因为 has_many :rooms 关联需要 Room 模式,但您有 MainModule::SubModule::Room。
-
在 home.rooms 正常工作之前我就是这么想的
-
你试过
belongs_to :home, class_name: 'MainModule::SubModule::Home' -
@AsadAli 是的,我做到了。问题是,为什么在不指定类名的情况下,调用关联对象有效但分配关联对象无效。
标签: ruby-on-rails activerecord associations