加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 获取NameError:尝试分配belongs_to时未初始化

发布时间:2020-12-17 04:36:39 所属栏目:百科 来源:网络整理
导读:我有两个模型,如下所示: module MainModule module SubModule class Home ActiveRecord::Base has_many :rooms end endendmodule MainModule module SubModule class Room ActiveRecord::Base belongs_to :home end endend 如果我执行以下操作,则会收到错误
我有两个模型,如下所示:
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,...>

出于某种原因,我可以获得相关的房间,但不能分配新房间.我在这里想念的是什么?

解决方法

您需要确保您的模型位于Rails中app / models目录下的子目录中.我有这样的事情:
$ls -1R app/models
  main_module

  app/models/main_module:
  sub_module

  app/models/main_module/sub_module:
  home.rb
  room.rb

使用该结构,我能够在Rails控制台中执行以下操作:

irb(main):001:0> home = MainModule::SubModule::Home.new
=> #<MainModule::SubModule::Home id: nil,name: nil,created_at: nil,updated_at: nil>
irb(main):002:0> home.name = 'Home'
=> "Home"
irb(main):003:0> home.save
=> true
irb(main):004:0> room = MainModule::SubModule::Room.new
=> #<MainModule::SubModule::Room id: nil,home_id: nil,updated_at: nil>
irb(main):005:0> room.name = 'Room'
=> "Room"
irb(main):006:0> room.save
=> true
irb(main):007:0> home.rooms << room
=> [#<MainModule::SubModule::Room id: 1,name: "Room",home_id: 1,created_at: "2016-01-06 14:28:06",updated_at: "2016-01-06 14:28:13">]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读