Активный админ has_many через удаление ассоциации - PullRequest
7 голосов
/ 06 февраля 2012

В настоящее время я делаю ассоциации вот так:

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

У меня есть следующие ассоциации:

Project

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

Когда я пытаюсь уничтожить ассоциацию пользователей через мою форму, ничего не происходит, есть идеи, чтобы решить эту проблему? Или добавить ссылку удаления в мой блок показа?

Ответы [ 2 ]

16 голосов
/ 07 февраля 2012

Попробуйте добавить 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
4 голосов
/ 05 июня 2012

allow_destroy: true является корнем этой проблемы.

...