我目前正在制作这样的协会:
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
解决方法
尝试将accepts_nested_attributes_for添加到Project模型(并将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