rails - 找到以不同名称连接多个字段

时间:2010-11-12 15:49:03

标签: ruby-on-rails

我有这两个表

ticket - id,user_id,manager_id等

users - id,first_name etc

user_id和manager_id都是用户的引用

使用rails有一种方法可以创建一个可以提取用户信息和管理员(用户)信息的查找。

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

谢谢,Alex

2 个答案:

答案 0 :(得分:1)

如果我理解正确,你应该使用类似的东西:

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"

答案 1 :(得分:0)

您的模型应设置为:

#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"')