2013-09-24 29 views
1

我有兩個具有1-n關係的類。像這樣:將Mongoid關係配置爲返回排序對象

class Band 
    include Mongoid::Document 
    has_many :members 
end 

class Member 
    include Mongoid::Document 
    field :name, type: String 
    field :joined, type: Date 
    belongs_to :band 
end 

現在當我打電話給band.members時,我得到了成員對象。我想要的是,如果我打電話band.members.last獲得加入最後的成員。我爲Member通過定義<=>方法實現這個和排序基於joined

band.members.sort.last 

我怎樣才能使這種行爲的默認?我不想避免額外的電話排序。這是可能的,如果是的話,怎麼樣?

+0

「我不希望避免額外的呼叫排序」?我沒有關注。爲什麼不只是添加一個方法,以清晰的方法名稱進行所需的操作? – WiredPrairie

+0

@WiredPrairie這是我目前的解決方案。我有一個'latest_band_member'方法來執行'band.members.sort.last'。我想知道這是否可以通過Mongoid DSL實現自動化。 –

回答

10
class Band 
    include Mongoid::Document 
    has_many :members, :order => :joined.asc 
end