Ich habe Modell Category, die rekursive parent_id Spalte hat. Inside DB habe ich sql_view (die nur readonly) Join-Tabelle erstellt (mit rekursiven Postgres-Funktion, db verwaltet automatisch alle Beziehungen, einfach "creates" ancestor_id & descendent_id für jedes verwandte Kategorie-Paar), um hierarchische Beziehungen zu schmeicheln.postgresql Ansicht beitreten Tabelle & has_and_belongs_to_many_association, wie Sie Callbacks überspringen
class Category < ActiveRecord::Base
belongs_to :parent,
class_name: 'Category',
foreign_key: :parent_id
has_and_belongs_to_many :category_ancestors,
class_name: 'Category',
join_table: 'category_ancestors',
foreign_key: :descendent_id,
association_foreign_key: :ancestor_id
has_and_belongs_to_many :category_descendents,
class_name: 'Category',
join_table: 'category_ancestors',
foreign_key: :ancestor_id,
association_foreign_key: :descendent_id
end
Damit kann ich nur
some_category.category_ancestors
some_another.category_descendents
Mit parent_id Speichern verwenden.
Das Problem ist, nach dem Entfernen der Kategorie, ActiveRecord automatisch versucht, alle verwandten Datensätze aus category_ancestors Tabelle zu entfernen, die readonly ist und eine Ausnahme darüber auslöst.
Gibt es eine Möglichkeit, ActiveRecord anzuweisen, nicht zu versuchen, join_table-Datensätze zu aktualisieren? Ich habe versucht, automatisch zu speichern: falsch, ohne Erfolg.