HAS_ONE /的has_many与依赖的破坏,但使​​用不同的名称为重点(has_one/has

2019-10-18 00:26发布

所以,我在看它有别人的代码如下(意译):

class user
  has_one :connection, :dependent => :destroy
  has_one :second_user, :through => :connection, :class_name => 'User'
end

class connection
  belongs_to :user
  belongs_to :second_user, :class => 'User'
end

如果我有一个连接对象,并删除相关的“用户”它可以被摧毁的罚款。 但我也想让它这样,如果用户占据了“second_user”字段被破坏的连接被破坏。 我怎样才能实现这个美丽的无缝没有太多的(希望没有迁移需要)搞乱?

谢谢!

Answer 1:

请注意,一个用户可以使用两个连接有关。 这意味着有其中用户之间存在另一个关联(作为第二用户),并连接其还没有定义。 我称之为secondary_connection

class User
  has_one :connection, :dependent => :destroy
  has_one :secondary_connection, :class_name => 'Connection', :foreign_key => :second_user_id, :dependent => :destroy  # Inverse of Connection second_user
  has_one :second_user, :through => :connection, :class_name => 'User'
end


文章来源: has_one/has_many with dependent destroy but using a different name for the key