Rails 3 - 嵌套表单和has_many通过关联

时间:2012-03-07 21:34:34

标签: ruby-on-rails-3 nested-forms has-many-through


嗨,大家好久不见了。但是我回来了,因为我需要你的帮助。我有一个rails 3.0.9应用程序,我正在使用嵌套表单和has_many通过关联。当我创建一个实例时,它很有效。当我尝试编辑时会出现问题。这是一个更好解释的例子。 (表名和属性仅用于解释)

表客户端

  • ID
  • COMPANY_NAME
  • 地址

表工作者

  • ID
  • 如first_name
  • 姓氏

表联系

  • ID
  • 的client_id
  • worker_id

我的模型看起来像这些

class Worker < ActiveRecord::Base
  has_many :contacts, :dependent => :destroy
  has_many :clients, :through => :contacts, :foreign_key => 'client_id'
end

class Client < ActiveRecord::Base
  has_many :contacts, :foreign_key => "client_id",:dependent => :destroy
  has_many :workers, :through => :contacts, :foreign_key => 'worker_id'

  accepts_nested_attributes_for :workers, :allow_destroy => false
end

class Contact < ActiveRecord::Base
  belongs_to :worker, :foreign_key => "worker_id"
  belongs_to :client, :foreign_key => "client_id"
end

然后在我创建客户端的表单中,我可以创建许多工作程序,rails会创建关联并为contacts表创建实例(通过使用嵌套表单)。

问题是,如果我想通过删除联系人来编辑客户端,则不会删除该联系人。如您所见,我将此行放在客户模型中

accepts_nested_attributes_for :workers, :allow_destroy => false

我将allow_destroy设置为false,因为我不想删除worker本身,我只想删除联系人元组。

有谁知道如何解决这个问题?希望你能帮帮我......谢谢

0 个答案:

没有答案