как вернуть родительские значения модели, когда я делаю запрос из базы данных - PullRequest
0 голосов
/ 25 января 2011

Итак, у меня есть модель с именем Image, которая принадлежит_пользователю. У каждого пользователя есть имя и фамилия.

У меня есть флэш-приложение, в которое я возвращаю объект json из Images.

служба, которую я буду вызывать на контроллере Images, будет выглядеть примерно так

def getimages
    @images = Image.all
    render :json => @images

  end

Мой JSON будет выглядеть примерно так

[{"image":{"created_at":"2011-01-22T19:04:30Z","img_path":"assets/img/bowl_93847566_3_0.png","updated_at":"2011-01-22T19:04:30Z","id":9,"user_id":3}}]

Я хотел бы также включить имя пользователя и фамилию в объект изображения, который передается обратно.

Когда у меня есть объект изображения, я могу сделать что-то вроде image.user.first_name, но мне не ясно, как я мог бы вернуть что-то вроде массива объектов изображения и включить пользователя вместе с ним.

было бы замечательно, если бы я мог заставить мой массив изображений выглядеть следующим образом.

[{"image":{"created_at":"2011-01-22T19:04:30Z","img_path":"assets/img/bowl_93847566_3_0.png","updated_at":"2011-01-22T19:04:30Z","id":9,"user_id":3, "first_name":"Matthew", "last_name":"Wallace"}}]

Я думаю, что это может включать добавление какого-либо модельного метода или чего-то, с чем я не знаком.

Что было бы лучшим способом для достижения этой цели?

Ответы [ 2 ]

1 голос
/ 26 января 2011

Вы могли бы:

render :json => @images.to_json(:include => :users)

См. http://apidock.com/rails/ActiveRecord/Serialization/to_jsonhttp://apidock.com/rails/Array/to_json показывает, что он работает на массивах). Наконец, http://apidock.com/rails/ActionController/Base/render описывает использование to_json в рендере json как необязательное и необязательное, что подразумевает, что это не должно причинять вреда (я не мог найти другой способ передать требуемые параметры).

Возможно, чище JSON:

render :json => @images.to_json(:include => { :user => { :only => [:first_name, :last_name] } })
0 голосов
/ 26 января 2011

Помимо ответа, предоставленного @apneadiving, вы также можете переопределить метод to_json в Image и вернуть строку, содержащую любой JSON, который вам нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...