1

所以排序 - 具有以下設置:最好的方法,通過一個多態關聯

class Event < ActiveRecord::Base 
has_many :invitations 
end 

class Invitation < ActiveRecord::Base 
    belongs_to :guest, :polymorphic => true 
    belongs_to :event 
end 

class Member > ActiveRecord::Base 
    has_many :invitations, :as => :guest 

    def full_name 
    [first_name, last_name].join(" ") 
    end 
end 

class Visitor > ActiveRecord::Base 
    has_many :invitations, :as => :guest 

    def full_name 
    name 
    end 
end 

最後,我希望能夠獲取由客人訂購了活動邀請FULL_NAME。我無法弄清楚 - 誰能幫我解決這個問題?將不勝感激:)

+0

我想你只能使用Ruby這樣做不是因爲多態結構 – fl00r 2011-03-26 21:02:22

+0

的SQL我猜你是對的!任何建議如何? – 2011-03-26 21:04:04

回答

2

至於full_name是一個虛擬的屬性,我可以想像,只有紅寶石的解決方案,不是SQL

event = Event.find some event 
event.invitations.sort_by(&:full_name) 
+0

太簡單了,我一定很累 - 謝謝fl00r! – 2011-03-26 21:15:46

+0

對'order()'有沒有類似的選項?例如在索引操作'Model ... joins()... order()... paginate'?或者只訂購一個表格列? – Sash 2015-03-28 15:14:53

+1

@sash這樣在mysql'Event.order(「concat(first_name,last_name)DESC」)' – fl00r 2015-03-30 11:46:52

相關問題