Rails中的正确关系对于此设置是什么:
users
id
name
email
roles
id
name
permissions
id
name
users_roles
id
user_id
role_id
roles_permissions
id
role_id
permission_id
然后我有以下模型:
class User < ActiveRecord::Base
end
class Role < ActiveRecord::Base
has_and_belongs_to_many :users, :join_table => 'users_roles'
end
class Permission < ActiveRecord::Base
has_and_belongs_to_many :roles, :join_table => 'roles_permissions'
end
这是对的吗?当我尝试访问时:
@user = User.find(params[:id])
@user.roles
我收到错误:undefined method 'roles' for #<User:0x007fc0176c6b08>
所以似乎关系设置不正确。
答案 0 :(得分:1)
所以似乎关系设置不正确。
您没有添加关联:)
class User < ActiveRecord::Base
has_and_belongs_to_many :roles, :join_table => 'users_roles'
end
roles_users
- 如果更改它,则不必指定join_table
option。