Rails 3.2:为嵌套属性赋值时的“未初始化常量”

时间:2014-01-26 06:49:16

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

用户有很多角色。在routes.rb中,它是:

resources :users do
  resources :user_roles
end

在模型用户中,它是:

has_many :user_roles, :dependent => :destroy    
accepts_nested_attributes_for :user_roles, :allow_destroy => true
validates_presence_of :user_roles

在模型user_role中,它是:

belongs_to :user 
belongs_to :role_definition, :class_name => 'RoleDefinition'

在控制器new中,它有:

@user.user_roles.build

在控制器创建中,有一行:

@user.user_roles << RoleDefinition.where(name: 'customer').first.id

但是它在执行时返回错误:

@user.user_roles << 2 uninitialized constant UserRole

@ user.user_roles在调试之前返回Empty Array&lt;&lt;赋值:

@user.user_roles=Empty Array

我们错过了上面的代码?

1 个答案:

答案 0 :(得分:0)

看起来您对UserRole模型的声明或关联有疑问:

#app/models/user_role.rb
class UserRole < ActiveRecord::Base
    belongs_to :user
end

#app/models/user.rb
class User < ActiveRecord::Base
    has_many :user_roles, class_name: "UserRole"
end