我有一个用户模型和一个角色模型。它们由 has_and_belongs_to_many 关系连接。当管理员创建用户时,我希望他们能够为用户分配角色并在我调用 @user.save 时将其保存
但问题是我收到一个警告,说我无法批量分配角色关系。
关于如何去做的任何建议,我在 Rails 2.3.2
谢谢。
编辑:按要求编码。
用户.rb
class User < ActiveRecord::Base
has_and_belongs_to_many :roles,
:join_table => "users_roles",
:foreign_key => "role_id",
:associated_foreign_key => "user_id"
end
角色.rb
class Role < ActiveRecord::Base
has_and_belongs_to_many :users,
:join_table => "users_roles",
:foreign_key => "user_id",
:association_foreign_key => "role_id"
end
查看:new.html.haml
- form_for(@user, users_path(:subdomain => current_account.subdomain)) do |f|
.input_set
= f.label(:login, "Username")
= f.text_field(:login)
.input_set
= f.label(:name)
= f.text_field(:name)
.input_set
= f.label(:email)
= f.text_field(:email)
- fields_for("user[roles][]", Role)do |user_role|
.input_set
%label Role
= user_role.select(:name, Role.all.map{|r| [r.name, r.id] })
.input_set
= f.label(:password)
= f.password_field(:password)
.input_set
= f.label(:password_confirmation, "Password Again")
= f.password_field(:password_confirmation)
.input_set
%label
= f.submit "Add User"
我希望通过在我的创建选项中调用 @user.save 将角色保存给用户。那可能吗?或者这是我不能用那种方式使用的关系,我是否需要一个 has_many 关系才能做到这一点。