Включить два результата базы данных в один вывод запроса API с помощью Rails 3 - PullRequest
0 голосов
/ 16 апреля 2011

Я разрабатываю API в Rails 3, и у меня есть модель пользователя и модель сообщения.Я хочу, чтобы разработчик мог получить всю информацию о пользователе, а также последнее сообщение от пользователя.Как я могу это сделать?Как я могу "включить" сообщения в пользовательский вывод?

Как этот код можно изменить в соответствии с моими целями?

def index

    @contacts = current_user.contacts

    @users = Array.new

    @messages = Array.new

    @contacts.each do |contact|

        user = User.find(contact.friend_id)

        @users << user

        message = Message.find_by_user_id(contact.friend_id)

        @messages << message

    end

    respond_to do |format|

        format.html { render :text => 'Use either JSON or XML' }
        format.json { render :json => @users }
        format.xml { render :xml => @users }

    end

end

Благодарен за весь ввод!

1 Ответ

1 голос
/ 17 апреля 2011

Вы должны воспользоваться своей моделью и включить последнее сообщение в качестве метода в свою модель пользователя.Затем вы можете использовать: методы хэша метода рендеринга.

  format.json { render :json => @users , :methods => [:last_message]}

РЕДАКТИРОВАТЬ

Ваша пользовательская модель должна выглядеть примерно так:

def User < ActiveRecord::Base
  has_many :messages
  attr_accessor :name, :email #Include the fields you wish to show here

  def last_message
    self.messages.first
  end
end

И ваш контроллер:

def index

    @contacts = current_user.contacts

    respond_to do |format|

        format.html { render :text => 'Use either JSON or XML' }
        format.json { render :json => @contacts, :methods => :last_message }
        format.xml { render :xml => @contacts, :methods => :last_message }

    end

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