Я использую 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
? То есть, какой метод можно / нужно запустить? Как?