1
我想能夠爲每個用戶分配多個角色,然後用User.first.roles之類的東西重新獲得他們,但是我迷路了,您會如何使用rails控制檯進行操作?我在模型中做了什麼錯誤?用戶通過任務有很多角色
u = User.first
User Load (0.1ms) SELECT "users".* FROM "users" LIMIT 1
=> #<User id: 18 [...]>
1.9.3-p194 :004 > u.roles
NameError: uninitialized constant User::Assignment
from [path]/ruby-1.9.3-p194/gems/activerecord-3.2.3/lib/active_record/inheritance.rb:119:in `compute_type'
from [path]/ruby-1.9.3-p194/gems/activerecord-3.2.3/lib/active_record/reflection.rb:172:in `klass'
from [path]/ruby-1.9.3-p194/gems/activerecord-3.2.3/lib/active_record/reflection.rb:385:in `block in source_reflection'
from [path]/ruby-1.9.3-p194/gems/activerecord-3.2.3/lib/active_record/reflection.rb:385:in `collect'
from [path]/ruby-1.9.3-p194/gems/activerecord-3.2.3/lib/active_record/reflection.rb:385:in `source_reflection'
from [path]/ruby-1.9.3-p194/gems/activerecord-3.2.3/lib/active_record/reflection.rb:508:in `check_validity!'
from [path]/ruby-1.9.3-p194/gems/activerecord-3.2.3/lib/active_record/associations/association.rb:26:in `initialize'
from [path]/ruby-1.9.3-p194/gems/activerecord-3.2.3/lib/active_record/associations/collection_association.rb:24:in `initialize'
from [path]/ruby-1.9.3-p194/gems/activerecord-3.2.3/lib/active_record/associations/has_many_through_association.rb:10:in `initialize'
from [path]/ruby-1.9.3-p194/gems/activerecord-3.2.3/lib/active_record/associations.rb:157:in `new'
from [path]/ruby-1.9.3-p194/gems/activerecord-3.2.3/lib/active_record/associations.rb:157:in `association'
from [path]/ruby-1.9.3-p194/gems/activerecord-3.2.3/lib/active_record/associations/builder/association.rb:44:in `block in define_readers'
from (irb):4
from [path]/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/commands/console.rb:47:in `start'
from [path]/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/commands/console.rb:8:in `start'
from [path]/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
型號/ user.rb
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation, :role_id
has_many :assignments
has_many :roles, through: :assignments
#more code...
end
型號/ role.rb
class Role < ActiveRecord::Base
attr_accessible :name
has_many :assignments
has_many :users, through: :assignments
end
型號/ assignments.rb
class Assignments < ActiveRecord::Base
attr_accessible :role_id, :user_id
belongs_to :user
belongs_to :role
end
schema.rb:http://cl.ly/323n1t0Q1t390y1M2S0E
應該是「將models/assignments.rb重命名爲models/assignment.rb」(將文件名刪除)? – scarver2 2012-07-12 15:42:39
對不起,更新它,這是一個錯字。 – abhas 2012-07-12 15:48:07