rails - найти соединение нескольких полей под разными именами - PullRequest
0 голосов
/ 12 ноября 2010

У меня есть эти две таблицы

тикеты - id, user_id, manager_id и т. Д.

пользователей - идентификатор, имя и т. Д.

user_id и manager_id являются ссылками для пользователей

Использование рельсов - это способ создания находки, которая включает информацию о пользователях и информацию о менеджерах (пользователях).

Соединения SQL будут выглядеть примерно так -

LEFT JOIN users ON users.id = tickets.user_id

LEFT JOIN users as managers ON managers.id = tickets.manager_id

Ожидаемый результат

ticket:
  subject: something interesting
  user_id: 1
  manager_id: 3
  user:
   id: 1
   name: Frank
  manager:
   id: 3
   name: Alex

Спасибо, Алекс

Ответы [ 2 ]

1 голос
/ 12 ноября 2010

Если я вас правильно понял, вы должны использовать что-то вроде:

class Ticket < ActiveRecord::Base
   belongs_to :user
   belongs_to :manager, :class_name => "User"
end

class Ticket < ActiveRecord::Base
   has_many :tickets
end

Тогда вы можете использовать

@ticket = Ticket.first
@ticket.user.name    >> "Frank"
@ticket.manager.name >> "Alex"
0 голосов
/ 12 ноября 2010

Ваши модели должны быть настроены так:

#ticket.rb
belongs_to :user
belongs_to :manager

#manager.rb
has_many :tickets

#user.rb
has_many :tickets

Примеры находок (пока не ясно, как вы хотите настроить свою находку):

Ticket.find(x)
Ticket.all.select{|t|t.manager_id == @manager.id}
Ticket.find(:all, :conditions => 'manager_id="@manager.id"')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...