2011-07-01 71 views
1

我正在使用Ruby on Rails 3.0.7,我有樹類什麼行爲幾乎相同(以及它們中的代碼模型文件)。所有這些都有一個name和一個description屬性,運行相同的驗證方法,並且都有一個before_save回調,保持數據一致提供相同的功能。重構驗證方法和回調

我想重構一個分隔的類\型號(我想我已經找到他們在我的應用程序的文件夾\lib相關文件)的驗證方法和回調。

我該怎麼做才能做到這一點?我必須在我的類中添加哪些代碼以及重構類\ model中的內容?

回答

0

好了,你可以只讓一個超類從您的三款車型繼承。我傾向於將抽象基類放在模型本身旁邊的應用程序/模型中。

# app/models/thing.rb 
class Thing < ActiveRecord::Base 
    # common code goes here, such as 
    before_save ... 
    validates_length_of :foo 
end 

# app/models/red_thing.rb 
class RedThing < Thing 
    # methods specific to RedThing go here 
end 

# app/models/blue_thing.rb 
class BlueThing < Thing 
    # methods specific to BlueThing go here 
end 

如果你的東西有很多不同,使得它沒有意義對他們這樣的羣體,你想使用一個模塊來代替,這是比較複雜的一個唯一的位。

+0

戴維斯 - 你能否讓我使用模塊的例子? – Backo

+0

當你嘗試類似的模塊時,遇到什麼麻煩? –

0
+0

Paul Groves - 這是爲了驗證的目的...和回調?此外,我想在分離的類\模型中保留所有「重構代碼」。 – Backo

+0

道歉...承諾,沒有更多的意見,但沒有正確讀取問題:( FWIW - @ rob-davis'答案看起來不錯,我做了同樣的事情,當創建多個類從不同的數據庫運行 –

+0

Groves - 無論如何,謝謝你, – Backo