2010-08-27 72 views
3

現在我的類看起來像這樣。繼承rails中的active_record

class BalanceName < ActiveRecord 
    def before_validation 
     set_blank_attributes_to_nil(@attributes) 
    end 
end 

class Balance < ActiveRecord 
    def before_validation 
     set_blank_attributes_to_nil(@attributes) 
    end 
end 

我想將activer記錄繼承到一個類中,而不是想將該類繼承到其他類中。

我想要這樣的東西。

class CommonActiveRecord < ActiveRecord::Base 

    def before_validation 
    set_blank_attributes_to_nil(@attributes) 
    end 

end 

class BalanceName < CommonActiveRecord 
    def before_validation 
     super 
    end 
end 

class Balance < CommonActiveRecord 
    def before_validation 
     super 
    end 
end 
+0

您還需要指示軌道您CommonActiveRecord類是抽象的,因此不會通過增加持續。而我的其他班級將繼承那個普通班級。在我的問題的第二個塊中,我寫了一個代碼,我想要類似的東西。 – 2010-08-27 21:07:37

回答

2

你可以做完全一樣,你有除了你不需要在你的子類中重新定義before_validation方法(雖然我猜這些可能在被更多特定的驗證填充之前)。 @phil我想創造出繼承ActiveRecord的一個通用類

​​
0

您可以創建模塊(例如LIB/common_active_record.rb):

module CommonActiveRecord 
    def before_validation 
    set_blank_attributes_to_nil(@attributes) 
    end 
end 

然後在你的模型只是它包含:

class BalanceName < ActiveRecord::Base 
    include CommonActiveRecord 
end 

class Balance < ActiveRecord::Base 
    include CommonActiveRecord 
end