在Rails中按复杂结构排序

时间:2012-11-02 18:34:53

标签: ruby ruby-on-rails-3

我有一个名为Event的模型,它有许多EventRegistrations,属于一个人。 此外,EventRegistration还有许多EventAtendees,它也属于一个人。

我想在Rails中订购与事件相关的所有人,这意味着:   - 与事件注册相关联的人员   - 与注册相关联的事件参与者相关联的人员。

任何帮助?

2 个答案:

答案 0 :(得分:2)

据我了解,您有以下模型和关联:

Event
  has_many :event_registrations

EventAttendee
  belongs_to :event_registration
  belongs_to :person

Person
  has_many :event_registrations
  has_many :event_attendees

EventRegistration
  belongs_to :person
  belongs_to :event

现在,关于你的实际问题。你说你想'命令所有与事件有关的人'

我实际上并没有看到'订购'(a.k.a排序)是如何进入这个的。

要让所有与某个事件相关联的用户,我建议添加一些:通过关联:

Event
  has_many :event_attendees, :through => :event_registrations
  has_many :people, :through => :event_attendees

然后,当你有一个事件对象时,你可以简单地在它上面调用.people,它就会起作用。

答案 1 :(得分:0)

假设您已正确设置所有ActiveRecord关联,以下是按姓氏命名的方式。

event_registrations = EventRegistrations.find(:all)

ordered_event_registrations = event_registrations.sort{|registration_a,registration_b|registration_a.people.lastname<=>registration_b.people.lastname}