2014-02-17 3 views
0

Я создаю систему обмена сообщений в Rails, и для того, чтобы показать партнер разговора, я получаю их идентификатор из сообщений, которые current_user включены в:Выберите атрибут, который не current_user.id

Message.where("to_id = ? or user_id = ?", current_user.id, current_user.id) 

Однако , как мне нужно только идентификатор другого пользователя из этого запроса, мне нужно, чтобы выбрать его, и я хотел бы выбрать либо :to_id или :user_id в зависимости от того не равна current_user.id

что-то вроде:

Message.where("to_id = ? or user_id = ?", current_user.id, current_user.id).select(:to_id, :user_id unless current_user.id) 

Заранее спасибо!

Edit: Вот таблица сообщений упрощена:

create_table "messages", force: true do |t| 
    t.integer "to_id" -> User to whom the message was forwarded to 
    t.integer "user_id" -> User who wrote the message 
    end 
+0

являются вы просто пытаетесь получить массив идентификаторов, или вам нужно знать, являются ли они из полей: to_id и: user_id? – blotto

ответ

0

если ваш просто пытается получить идентификаторы:

Message.where("to_id = ? or user_id = ?", current_user.id, current_user.id). 
     map { |m| 
     m.user_id == current_user.id ? m.to_id : m.user_id 
     } 

это даст вам и массив как

# => [3771, 3611, 3749, 3638, 3697, 3786] 
+0

Да, требуется только идентификация без права собственности. Это сработало, спасибо вам! – Kasperi

Смежные вопросы