我目前正在制作这样的协会:
show do
h3 project.title
panel "Utilisateurs" do
table_for project.roles do
column "Prenom" do |role|
role.user.firstname
end
column "Nom" do |role|
role.user.lastname
end
column "email" do |role|
role.user.email
end
column "Role" do |role|
role.role_name.name
end
end
end
end
# override default form
form do |f|
f.inputs "Details" do # Project's fields
f.input :title
f.input :code
end
f.has_many :roles do |app_f|
app_f.inputs do
# if object has id we can destroy it
if app_f.object.id
app_f.input :_destroy, :as => :boolean, :label => "Supprimer l'utilisateur du projet"
end
app_f.input :user, :include_blank => false, :label_method => :to_label
app_f.input :role_name, :include_blank => false
end
end
f.buttons
end
我有以下关联:
项目
has_many :roles, :dependent => :destroy
has_many :users, :through => :role
用户
has_many :roles, :dependent => :destroy
has_many :projects, :through => :role
角色
belongs_to :user
belongs_to :project
belongs_to :role_name
ROLENAME
has_many :roles
当我试图通过我的表单破坏用户关联什么都没发生时,有什么想法来解决这个问题? 或者添加删除链接到我的show块?
答案 0 :(得分:16)
尝试将accepts_nested_attributes_for
添加到您的项目模型中(并roles_attributes
添加到attr_accessible):
class Project < ActiveRecord::Base
has_many :roles, :dependent => :destroy
has_many :users, :through => :role
accepts_nested_attributes_for :roles, :allow_destroy => true
attr_accessible :roles_attributes, (+ all you had here before)
...
end
答案 1 :(得分:4)
allow_destroy:true 是此问题的根源。