@flor_master
Могу верстать, могу не верстать.

Как правильно сделать выборку в ROR?

Всем привет.
Начал изучать рельсы и практически сразу столкнулся с банальной проблемой.

Ситуация такая: есть покупатели и у каждого покупателя есть по несколько заказов.
Модели выглядят так:
class User < ActiveRecord::Base
  has_many :order
end

class Order < ActiveRecord::Base
  belongs_to :user
end


Есть контроллер User#index , который отдает JSON со всеми пользователями.
class UserController < ApplicationController
  def index
    @user = User.all
    render json: @user
  end
end


Можно ли одной командой, сделать выборку из двух таблиц: пользователи и заказы так, что бы сформировался JSON который будет сожердать всех пользователей и их заказы? Или надо проходиться циклом по полученым пользователям и делать запрос по каждому пользователю?
  • Вопрос задан
  • 2354 просмотра
Решения вопроса 1
viktorvsk
@viktorvsk
Во-первых, has_many :orders всё-таки (во множественном числе)
По простому можно делать как-то так:
class UsersController < ActionController::Base
   def index
     @users = Hash[User.all.map{ |u| [u.name, u.orders.to_a }].to_json
   end
end

Но правильно было б, наверное, посмотреть в сторону rabl или builder, вывести @users = User.all, а дальше заказы уже обработать в view.
Вот что такое jbuilder: railscasts.com/episodes/320-jbuilder
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Able1991
@Able1991
Пишу на рельсах
@users.as_json :include => :orders
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы