Доступ к родительскому объекту из дочернего объекта в рельсах? - PullRequest
0 голосов
/ 24 августа 2018

У меня есть три сериализатора, вложенных друг в друга. Как это:

class PersonSerializer < ActiveModel::Serializer
  attributes :id :name
  has_many: companies

   class Company < ActiveModel::Serializer
    has_many :products

     class ProductSerializer < ActiveModel::Serializer
      has_many :product_items do
        unless person.id != object.company.user_id
          object.product_items
        end
      end
    end
  end
end

Моя проблема - строка: unless person.id != object.company.user_id. человек здесь не определен. Как получить доступ к текущему экземпляру person в ProductSerializer?

1 Ответ

0 голосов
/ 24 августа 2018

Я не уверен, зачем вам эта структура, но общее определение class объявляет новую область.Если вам нужно захватить переменные из родительской области, используйте вместо этого закрытие с Class#new:

class PersonSerializer < ActiveModel::Serializer
  attributes :id :name
  has_many: companies

  Company = Class.new(ActiveModel::Serializer) do
    has_many :products

     ProductSerializer = Class.new(ActiveModel::Serializer) do
      has_many :product_items do
        unless person.id != object.company.user_id
          object.product_items
        end
      end
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...