Как "заказать по id " JSON с Rabl
Я хочу, чтобы порядок вывода json по id(дочерний идентификатор)
Могу ли я решить эту проблему?
это какой-то код в моем проекте
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
Извините за мой английский, спасибо.
3 ответа
Это зависит от вашего приложения и того, чего вы хотите достичь, но вы можете определить default_scope
в Question
модель как это:
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
,
Я не знаю RABL, но я думаю, что вы можете просто передать коллекцию вместо символа. учитывая, что ты :question
это has_many
отношение к вашему Book
класс, вы можете просто использовать поиск для этого:
child @book.questions.order('id ASC') do
attributes :id , :name
end
Выполните заказ в моделях и используйте 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
Наконец, ваш Рабл будет
object @book
child :ordered_questions do
attributes :id, :name
end