Ich habe ein Rezept-Portal und diese Rezepte können Tags haben.Rails 4: Zugriff auf Variablen im Inneren vor dem Rückruf
class Recipe < ActiveRecord::Base
has_many :taggings, dependent: :destroy
has_many :tags, through: :taggings, dependent: :destroy
end
class Tag < ActiveRecord::Base
has_many :taggings, dependent: :destroy
has_many :recipes, through: :taggings
end
class Tagging < ActiveRecord::Base
belongs_to :tag
belongs_to :recipe
end
... wenn ich ein Rezept löschen, ich mag den Tag löschen, wenn das Rezept das einzige Rezept mit diesem Tag ist gelöscht.
class Recipe < ActiveRecord::Base
has_many :taggings, dependent: :destroy
has_many :tags, through: :taggings, dependent: :destroy
before_destroy :remove_tags
private
# I need to pass an individual recipe
def remove_tags
if self.tags.present?
self.tags.each do |tag|
Recipe.tagged_with(tag).length == 1 ? tag.delete : next
# tagged_with() returns recipes with the given tag name
end
end
end
end
Diese Funktion würde funktionieren, aber ich kann nicht auf die Tags zugreifen. Wie greife ich auf die Tags für das gelöschte Rezept zu?
Danke für die gründliche Erklärung! –