【发布时间】:2014-02-18 16:15:28
【问题描述】:
我在 Rails 3.2.14 上有 ruby 项目。我有 2 个名为“国家”和“用户”的表。在“用户”表中有名为“countries_id”的 FK。
在模型上,我使表关系如下:
在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 >
我真的希望有人知道我的问题, 无论如何谢谢你,对不起我的英语不好:)
【问题讨论】:
-
请遵循 Rails 命名约定 型号名称不应为复数
-
什么意思,可以更具体点吗?
标签: ruby-on-rails ruby ruby-on-rails-3