2015-11-05 2 views
0

У меня есть два класса Serializer. В контроллере индекса я хочу пропустить загрузку project_products, только метод show/edit. Я хочу получить информацию о проекте_product.Дополнительный атрибут в серийном процессоре activemodel в рубине на рельсах

class ProjectSerializer < ActiveModel::Serializer 
     attributes :id, :name, :category, :project_category_id, :status, :description 
     has_many :project_products 
    end 

class ProjectProductSerializer < ActiveModel::Serializer 
    attributes :id, :name, :quantity 
end 

Контроллер:

def index 
    respond_with @projects 
    end 

def load_projects 
    @projects = current_organization.projects.includes(:project_category) 
    end 
+0

Подводя итог, вы не хотите загружать project_products в show/edit? – Defoncesko

+0

hi @Defoncesko Просто напротив хочу загрузить project_products в show/edit, но не в индекс – Santi

+0

Покажите свои коды просмотров и контроллеров, пожалуйста. – Defoncesko

ответ

0

Попытка переопределить методы ассоциации

class ProjectSerializer < ActiveModel::Serializer 
     attributes :id, :name, :category, :project_category_id, :status, :description 
     has_many :project_products 

    def project_products 
     if current_page?(edit_path_url) 
      object.comments 
     else 
      object.comments = nil 
    end 

end 
+0

Спасибо за вашу помощь, но когда я поместил код 'response_with @ projects.to_json (: except => [" project_products "])' он игнорирует мой активный сериализатор и показывает все поля составляют таблицу проектов – Santi

+0

Это то, что вы используете? https://github.com/rails-api/active_model_serializers – Defoncesko

+0

да, вы правы – Santi

0

Вы можете использовать "кроме" парам при создании экземпляра сериализатора:

respond_with @projects, except: project_products 

(когда действие контроллера индекса)

Смежные вопросы