@Qelphybox
Front-end developer

Как изменить модель в колбэке другой модели?

У меня есть модели Category, Subcategory и Group, связанные таким образом:

class Category
  has_many :subcategories
  has_many :groups
end

class Subcategory
  belongs_to :category
  has_many :groups
end


Я хочу заставить подкатегорию наследовать группы категории и делаю это таким образом:

class Category
  has_many :subcategories
  has_many :groups
  after_save :pass_to_subcategories

  private
  def pass_to_subcategories
    subcategories.map do |sc| 
      sc.groups = groups
    end
  end

end


Но во время исполнения колбэка groups является пустым массивом, хотя операция save в тот момент должна была сохранить группы для этого экземпляра. Очевидно, я что-то делаю не так. Прошу помощи. Спасибо.
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 2
premas
@premas
Full-stack web-developer
хотя операция save в тот момент должна была сохранить группы для этого экземпляра


Как сохраняете, что утверждаете это? Нужно обернуть сохранение Category и Subcategory в одну транзакцию.
Ответ написан
Комментировать
Jeiwan
@Jeiwan
after_save

операция save в тот момент должна была сохранить

Вам не кажется, что эти строчки друг другу противоречат?

На самом деле, здесь не нужна связь
has_many :groups
у подкатегории. Достаточно создать метод:
class Subcategory
  def groups
    category.groups
  end
end
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы