我在这里有点困惑。我有2个型号: 用户 票
故障单属于一个用户为“已分配”。
用户有多张门票(两次?)
所以我在这里得到了:
# Table name: tickets
#
# id :integer not null, primary key
# label :string(255)
# content :text
# reported_by_id :integer
# assigned_to_id :integer
# created_at :datetime
# updated_at :datetime
#
class Ticket < ActiveRecord::Base
belongs_to :reported_by, :class_name => 'User'
belongs_to :assigned_to, :class_name => 'User'
end
# Table name: users
#
# id :integer not null, primary key
# login :string(255)
# password :string(255)
# created_at :datetime
# updated_at :datetime
#
class User < ActiveRecord::Base
has_many :tickets, :class_name => 'Ticket', :foreign_key => 'reported_by_id'
has_many :tickets, :class_name => 'Ticket', :foreign_key => 'assigned_to_id'
end
我想做“aUser.tickets”并获取他报告的所有用户的门票。
有任何帮助吗? 谢谢!
答案 0 :(得分:1)
基本上,你需要两个不同关系的不同属性和第二个结合两者的方法。
class User < ActiveRecord::Base
has_many :reported_tickets, :class_name => 'Ticket', :foreign_key => 'reported_by_id'
has_many :assigned_tickets, :class_name => 'Ticket', :foreign_key => 'assigned_to_id'
def tickets
reported_tickets + assigned_tickets
end
end
答案 1 :(得分:1)
您应该在用户模型中区分has_many的名称:
class User < ActiveRecord::Base
has_many :reported_by_tickets, :class_name => 'Ticket', :foreign_key => 'reported_by_id'
has_many :assigned_to_tickets, :class_name => 'Ticket', :foreign_key => 'assigned_to_id'
end
现在致电
@user.reported_by_tickets
@user.assigned_to_tickets
否则,您的代码在目标上看起来正确。