2013-09-19 2 views
0

Следующая оказывает JSON атрибута selected_branch, включая все ее продукты, и категории для продуктов:Рендер JSON и фильтрацию по атрибуту в Ruby On Rails

render json: selected_branch, :include => { :products=> {:include =>:categories }, :enabled => true } 

Как я могу включать в себя только все продукты которые имеют «Product.enabled = true»?

ответ

0

Ранее в вашем запросе ActiveRecord, где вы предположительно получаете данные для selected_branch, создайте его в своем запросе до render :json. Я бы начал с использования области рельсов на модели.

Что-то вроде этого:

В модели (не уверен, что это такое, так что я буду ссылаться на него как филиал)

Branch.rb

class Branch < ActiveRecord::Base 
    has_many :products 
    scope :with_enabled_products, -> { includes(:products).where(products: {enabled: true}) } 
end 

Затем в контроллер

selected_branch = Branch.with_enabled_products 

Тогда вы должны визуализировать JSON только те из ветвей, которые имеют ena сгущенные продукты. Конечно, вы всегда можете использовать .where(...) в конце этой области, потому что это просто отношение ActiveRecord, и вы можете сузить набор данных.

+0

Я получаю это: NoMethodError (undefined method 'enabled_products 'для # ): – MXV

+0

Вы должны вызвать область действия, я понял в своем первоначальном ответе, я ошибочно набрал вызов метода в контроллере, попробуйте изменить это вместо «Branch.with_enabled_products» и посмотреть, как это работает. Я обновлю ответ. – derekyau

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