2013-11-15 45 views
0

我剛剛升級到Ruby 2.0,默認情況下會爲Padrino應用程序加載ActiveRecord 4。這很好,我想利用Ruby 2.0和AR 4的改進。但是,我很難重寫以前工作的一些關係。ActiveRecord 4如何向用戶:訂購和:包括

例如,這將不再有效:

has_many :dvd_credits, :order => 'position', :include => [:dvd_actor, :dvd_role] 

它提供了一個過時的警告,但它顯示的例子是沒用的:has_many :spam_comments, -> { where spam: true }, class_name: 'Comment'

環顧四周,我能夠發現,這個工程由省略:include參數:

has_many :dvd_credits, -> { order :position } 

如果我添加它像這樣:

ArgumentError: Direction should be :asc or :desc 

我仍然在着手處理的變更AR 4,但真的很感激一些這方面的幫助:

has_many :dvd_credits, -> { order :position, include: [:dvd_actor, :dvd_role] } 

當我打電話這種關係我得到這個錯誤。

謝謝。客戶,那麼客戶是 渴望 - 那就是, 如果你有訂單belongs_to的

有沒有必要使用包括直接的關聯:

PS 我沒有在AR 4頁找到這個在需要時自動加載。

我認爲我可以放心地忽略include:參數嗎?

但這種關係有點複雜,它是這樣的:

class Dvd < ActiveRecord::Base 
    has_many :dvd_credits, -> { order :position } 
    has_many :dvd_actors, :through => :dvd_credits 
    has_many :dvd_roles, :through => :dvd_credits 

class DvdCredit < ActiveRecord::Base 
    belongs_to :dvd_actor, :inverse_of => :dvd_credits 
    belongs_to :dvd_role, :inverse_of => :dvd_credits 
    belongs_to :dvd, :inverse_of => :dvd_credits 

class DvdActor < ActiveRecord::Base 
    has_many :dvd_credits, :inverse_of => :dvd_actors 
    has_many :dvds, :through => :dvd_credits 

,但似乎滿足belongs_to條件。

回答

0

是的,你可以忽略:include部分。