【发布时间】:2013-12-13 18:10:20
【问题描述】:
好的,所以我的 postgresql 数据库中有两个与我的问题有关的表:
Table: roles
Fields:
| id | name | description | active |
-----------------------------------------------------------
| | | | |
Table: role_permissions
Fields:
| id | role_id | permission_id |
--------------------------------------------------
| | | |
权限本身存储在一个单独的permissions 表中,该表充当定义表。
这是我的模型关系的样子:
Role:
has_many :role_permissions, :dependent => :destroy
Role_Permission:
belongs_to :role
我必须创建一个新的role 的表单看起来像这样:
<%= form_for([:admin, @role], html: {role: "form"}) do |f| %>
<%= render "admin/shared/error_messages", obj: @role %>
<fieldset>
<legend>General Information</legend>
<div class="form-group">
<%= f.label :name, "Role Name" %>
<span class="help-block">Used to identify the role in code files.</span>
<%= f.text_field :name, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :description %>
<span class="help-block">What is this role used for?</span>
<%= f.text_area :description, class: "form-control" %>
</div>
</fieldset>
<fieldset>
<legend>Role Permissions</legend>
<% @permissions.each do |p| %>
<label>
<%= check_box_tag "role[role_permissions][][permission_id]", p.id %>
<%= p.name %>
</label>
<% end %>
</fieldset>
<%= f.submit "Save Role", class: "btn btn-primary" %>
<%= link_to "Cancel", :back, class: "back-btn" %>
<% end %>
保存一个新角色(选择了一些权限)给了我这些可用的params[]:
{"utf8"=>"✓",
"authenticity_token"=>"*******=",
"role"=>{"name"=>"Test Role",
"description"=>"This is a test role",
"role_permissions"=>[{"permission_id"=>"1"},
{"permission_id"=>"9"},
{"permission_id"=>"10"},
{"permission_id"=>"11"}]},
"commit"=>"Save Role"}
我可以用它来保存角色本身:
@role = Role.new(role_params)
if @role.save
flash[:success] = "Role has been successfully created!"
redirect_to admin_roles_path
else
setup_subnav("users")
flash[:danger] = "Something went wrong! Please try again."
render :new
end
我有点困惑的部分是如何让role_permissions 参数数组保存为role_permissions 表中的单独记录。如您所见,我需要用他们的permission_id 和“父级”role_id 保存它们。
如何获取表单以保存单个 role_permissions 记录?感谢您的帮助!
【问题讨论】:
-
您使用的是哪个版本的导轨?
标签: ruby-on-rails postgresql loops associations