Проблема при удалении "связанных" экземпляров модели - PullRequest
1 голос
/ 08 января 2012

Я использую Ruby on Rails 3.1.0 и хотел бы знать, почему записи базы данных в следующем примере не удаляются при уничтожении «связанного» экземпляра модели.

В моем приложении у меня есть следующие классы:

class User < ActiveRecord::Base
  has_one :account,
    :autosave    => true,
    :dependent   => :destroy

  has_many :article_relationships,
    :class_name  => 'ArticleUserRelationship',
    :foreign_key => 'user_id',
    :autosave    => true,
    :dependent   => :destroy
  has_many :articles,
    :through     => :article_relationships,
    :source      => :article,
    :dependent   => :destroy

  ...
end

class ArticleRelationship < ActiveRecord::Base
  belongs_to :user

  ...
end

class Account < ActiveRecord::Base
  belongs_to :user,
    :autosave     => true,
    :dependent    => :destroy
end

Если я использую методы @article.user.destroy или @article.user.account.destroy (примечание: article является разновидностью Article), они удаляют из базы данных пользователь , учетную запись и запись статьи записей, но не удалит пользователей, связанных статьи , даже если я укажу has_many :articles ... :dependent => :destroy.

В любом случае, я читаю официальное руководство RoR о «Справочнике ассоциации has_many» , а в главе 4.3.2.6: зависимая написано:

Этот параметр (:dependent) игнорируется при использовании параметра: сквозной связи.

Итак, что я мог / должен сделать, чтобы удалить всех пользователей articles? То есть, какой метод можно / нужно запустить? Как?

...