0

ユーザー、大学、キャンパスの3つのテーブルがあります。それらのモデルは次のとおりです。

class User < ActiveRecord::Base
  belongs_to :university
end

class Campus < ActiveRecord::Base
  belongs_to :university
end

class University < ActiveRecord::Base
  has_many :users, dependent: :destroy
  has_many :campuses, dependent: :destroy
end

しかし、私は大学からキャンパス協会を取得するのに問題があります。これをチェックして:

1.9.2p290 :012 > u = University.find(3)
 => #<University id: 3, name: "myuni", email: "uni.com", created_at: "2012-06-04 03:48:59", updated_at: "2012-06-13 03:22:18"> 
1.9.2p290 :013 > u.users
 => [#<User id: 21, name: "myname", email: "myemail", password: "asdfgh", created_at: "2012-08-10 23:42:40", updated_at: "2012-08-10 23:42:40", university_id: 3>] 
1.9.2p290 :014 > u.campus
NoMethodError: undefined method `campus' for #<University:0x000000031c8a10>
        from /home/mari/.rvm/gems/ruby-1.9.2-p290/gems/activemodel-3.0.10/lib/active_model/attribute_methods.rb:392:in `method_m
issing'
        from /home/mari/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/attribute_methods.rb:46:in `method_
missing'
        from (irb):14
        from /home/mari/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands/console.rb:44:in `start'
        from /home/mari/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands/console.rb:8:in `start'
        from /home/mari/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands.rb:23:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'

キャンパスの多元化が原因かもしれませんが、私もそれを修正することができませんでした。したがって、u.campu、u.campuses、u.campuesを試しましたが、同じ「NoMethodError」が発生します。

助言がありますか?ありがとう

4

2 に答える 2

0

追加しているようです:

  set_table_name 'campus'

モデルに:campus.rbはそれを修正しました

于 2012-08-14T03:59:21.230 に答える
0

構文はu.campusesまたはu.campuses.first

また、テーブルを次のように整理します。

class User < ActiveRecord::Base
  belongs_to :campus
end

class Campus < ActiveRecord::Base
  has_many :users, dependent: :destroy
  belongs_to :university
end

class University < ActiveRecord::Base
  has_many :campuses, dependent: :destroy
end
于 2012-08-14T04:07:18.730 に答える