2012-03-04 2 views
6

Я хочу, чтобы порядок вывода json по id (child id)Как «заказать по id» JSON с Rabl

Могу ли я решить эту проблему?

это какой-то код в моем проекте

show.json.rabl (я RABL)

object @book 
attributes :id , :name 

child :questions do 
    attributes :id , :name 
end 

books_controller.rb

def show 
    @book = Book.find(params[:id]) 
end 

Извините за мой английский, спасибо.

ответ

4

Это зависит от вашего приложения, и что вы хотите достичь, но вы могли бы определить в а default_scopeQuestion модель, как это:

class Question < ActiveRecord::Base 
    default_scope order('id ASC') 
end 

Или вы могли бы определить default_scope в Book модели:

class Book < ActiveRecord::Base 
    default_scope joins(:questions).order('questions.id ASC') 
end 

Если вы хотите зарядить questions, используйте includes вместо join.

1

Я не знаю RABL, но я думаю, что вы можете просто передать коллекцию вместо символа. учитывая, что вы :question это has_many отношения на ваш Book классе, вы могли бы просто использовать искатель для этого:

child @book.questions.order('id ASC') do 
    attributes :id , :name 
end 
+0

Да, вопрос: отношение has_many к моему классу книг, Спасибо, я пробовал, но все еще не работает. –

+0

Что вы подразумеваете под этим? что в результате json? – phoet

+0

Кстати, не извиняйтесь и не пишите, спасибо на ваши вопросы. – phoet

0

ли упорядоченность в моделях и использовать RABL для запроса метода для заказа

Вопрос модель

class Question < ActiveRecord::Base 
    # ... 
    scope :by_id, order('id ASC') 
    # ... 
end 

и затем метод в книге

class Book < ActiveRecord::Base 
    # ... 
    has_many :questions 
    # ... 
    def ordered_questions 
    questions.by_id 
    end 
    # ... 
end 

Наконец, ваш Rabl бы be

object @book 
child :ordered_questions do 
    attributes :id, :name 
end 

https://github.com/nesquena/rabl/issues/387

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