ruby-on-rails - 检查模型上的关系表, rails 上的 ruby

标签 ruby-on-rails ruby ruby-on-rails-3

我有 ruby​​ on rails 3.2.14 的项目。我有 2 个名为“国家”和“用户”的表。在“用户”表中,FK 名为“countries_id”。 在模型上,我将表关系设置为: 在 countries.rb 中,我设置了如下关系:

class Countries < ActiveRecord::Base
  self.primary_key = "id"
  has_many  :users,  :dependent => :destroy # plural
end

并在 users.rb 中:

class Users < ActiveRecord::Base
  self.primary_key = "id"


  belongs_to    :countries,
                :class_name => "Countries",
                :foreign_key => "countries_id"

end

当我想检查复数关系时,它没有.. 我输入如下所示的 Rails 控制台命令

c=Countries.find_by_id(1)

然后当我输入命令 u=c.users 时,出现一些错误 错误:

c=Countries.find_by_id(1)
  Countries Load (0.3ms)  SELECT `countries`.* FROM `countries` WHERE `countries`.`id` = 1 LIMIT 1
 => #<Countries id: 1, code: "IND", name: "Indonesia", created_at: "2014-02-17 09:18:11", updated_at: "2014-02-17 09:18:11"> 
1.9.3-p484 :012 > u=c.users
NameError: uninitialized constant Countries::User
    from /home/vinra/.rvm/gems/ruby-1.9.3-p484@rails3.2/gems/activerecord-3.2.14/lib/active_record/inheritance.rb:111:in `compute_type'
    from /home/vinra/.rvm/gems/ruby-1.9.3-p484@rails3.2/gems/activerecord-3.2.14/lib/active_record/reflection.rb:172:in `klass'
    from /home/vinra/.rvm/gems/ruby-1.9.3-p484@rails3.2/gems/activerecord-3.2.14/lib/active_record/associations/association.rb:118:in `klass'
    from /home/vinra/.rvm/gems/ruby-1.9.3-p484@rails3.2/gems/activerecord-3.2.14/lib/active_record/associations/association.rb:171:in `find_target?'
    from /home/vinra/.rvm/gems/ruby-1.9.3-p484@rails3.2/gems/activerecord-3.2.14/lib/active_record/associations/collection_association.rb:334:in `load_target'
    from /home/vinra/.rvm/gems/ruby-1.9.3-p484@rails3.2/gems/activerecord-3.2.14/lib/active_record/associations/collection_proxy.rb:44:in `load_target'
    from /home/vinra/.rvm/gems/ruby-1.9.3-p484@rails3.2/gems/activerecord-3.2.14/lib/active_record/associations/collection_proxy.rb:87:in `method_missing'
    from /home/vinra/.rvm/gems/ruby-1.9.3-p484@rails3.2/gems/railties-3.2.14/lib/rails/commands/console.rb:47:in `start'
    from /home/vinra/.rvm/gems/ruby-1.9.3-p484@rails3.2/gems/railties-3.2.14/lib/rails/commands/console.rb:8:in `start'
    from /home/vinra/.rvm/gems/ruby-1.9.3-p484@rails3.2/gems/railties-3.2.14/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
1.9.3-p484 :013 > ^C
1.9.3-p484 :013 >

我真的希望有人知道我的问题, 无论如何,谢谢你,抱歉我的英语不好:)

最佳答案

您应该更改代码中的很多内容:

app/models/country.rb

class Country < ActiveRecord::Base
    has_many :users, :dependent => :destroy
end

app/models/user.rb

class Users < ActiveRecord::Base
    belongs_to :country,
               :foreign_key => "countries_id"
end

然后像这样使用它:

country = Country.find(1)
p country.users

关于ruby-on-rails - 检查模型上的关系表, rails 上的 ruby ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21847509/

相关文章:

ruby-on-rails - Heroku Rails Rake 任务同步生产和本地数据库

ruby-on-rails - 没有要加载的文件 - "tasks/rails"+rails2 到rails3

ruby - 如何下载特定库 Ruby、Gems 和 Rails 并在 Ubuntu 中安装它们

ruby-on-rails - Rails - Heroku - Postgres - 不以明文形式存储敏感内容

ruby-on-rails - 没有路由匹配 [GET] "/logout"

ruby-on-rails - 使数组无效后不会释放 Ruby 内存

ruby - 图数据库/语言组合的推荐

javascript - 如何使用 Capybara Webkit 捕获特定元素或位置的屏幕截图?

ruby-on-rails - Rails 3 - 为 belongs_to 模型提供 id 的正确方法

ruby - 在 Ruby 中重置循环,或返回到循环的开始? (寻找一个数字的因数)