У меня есть две таблицы:
create_table "friendships", :force => true do |t|
t.integer "user1_id"
t.integer "user2_id"
t.boolean "hasaccepted"
t.datetime "created_at"
t.datetime "updated_at"
end
и
create_table "users", :force => true do |t|
t.string "email"
t.string "password"
t.string "phone"
t.boolean "gender"
t.datetime "created_at"
t.datetime "updated_at"
t.string "firstname"
t.string "lastname"
t.date "birthday"
end
Мне нужно показать пользователю список Friendrequests
, поэтому я использую этот метод в своем контроллере:
def getfriendrequests
respond_to do |format|
case params[:id]
when "to_me"
@friendrequests = Friendship.find(:all, :conditions => { :user2_id => session[:user], :hasaccepted => false })
when "from_me"
@friendrequests = Friendship.find(:all, :conditions => { :user1_id => session[:user], :hasaccepted => false })
end
format.xml { render :xml => @friendrequests }
format.json { render :json => @friendrequests }
end
end
Я делаю почти все, используя AJAX, поэтому, чтобы получить имя и фамилию пользователя с UID user2_id
(параметр to_me
появится позже, не беспокойтесь сейчас), мне нужноцикл for, который делает несколько вызовов AJAX.Это отстой и стоит много трафика.Поэтому я бы предпочел, чтобы getfriendrequests
также возвращал имя и фамилию соответствующих пользователей, поэтому, например, ответ JSON не будет:
[
{
"friendship": {
"created_at": "2010-02-19T13:51:31Z",
"user1_id": 2,
"updated_at": "2010-02-19T13:51:31Z",
"hasaccepted": false,
"id": 11,
"user2_id": 3
}
},
{
"friendship": {
"created_at": "2010-02-19T16:31:23Z",
"user1_id": 2,
"updated_at": "2010-02-19T16:31:23Z",
"hasaccepted": false,
"id": 12,
"user2_id": 4
}
}
]
, а скорее:
[
{
"friendship": {
"created_at": "2010-02-19T13:51:31Z",
"user1_id": 2,
"updated_at": "2010-02-19T13:51:31Z",
"hasaccepted": false,
"id": 11,
"user2_id": 3,
"firstname": "Jon",
"lastname": "Skeet"
}
},
{
"friendship": {
"created_at": "2010-02-19T16:31:23Z",
"user1_id": 2,
"updated_at": "2010-02-19T16:31:23Z",
"hasaccepted": false,
"id": 12,
"user2_id": 4,
"firstname": "Mark",
"lastname": "Gravell"
}
}
]
Я думал о цикле for в методе getfriendrequests
, но я не знаю, как это реализовать, и, возможно, есть более простой способ.Он также должен работать для XML.Может кто-нибудь мне помочь?Спасибо