我正在使用Ruby on Rails 3.0.7,我有樹類什麼行爲幾乎相同(以及它們中的代碼模型文件)。所有這些都有一個name
和一個description
屬性,運行相同的驗證方法,並且都有一個before_save
回調,保持數據一致提供相同的功能。重構驗證方法和回調
我想重構一個分隔的類\型號(我想我已經找到他們在我的應用程序的文件夾\lib
相關文件)的驗證方法和回調。
我該怎麼做才能做到這一點?我必須在我的類中添加哪些代碼以及重構類\ model中的內容?
我正在使用Ruby on Rails 3.0.7,我有樹類什麼行爲幾乎相同(以及它們中的代碼模型文件)。所有這些都有一個name
和一個description
屬性,運行相同的驗證方法,並且都有一個before_save
回調,保持數據一致提供相同的功能。重構驗證方法和回調
我想重構一個分隔的類\型號(我想我已經找到他們在我的應用程序的文件夾\lib
相關文件)的驗證方法和回調。
我該怎麼做才能做到這一點?我必須在我的類中添加哪些代碼以及重構類\ model中的內容?
好了,你可以只讓一個超類從您的三款車型繼承。我傾向於將抽象基類放在模型本身旁邊的應用程序/模型中。
# 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
如果你的東西有很多不同,使得它沒有意義對他們這樣的羣體,你想使用一個模塊來代替,這是比較複雜的一個唯一的位。
Rails的導遊有信息在這裏:
戴維斯 - 你能否讓我使用模塊的例子? – Backo
當你嘗試類似的模塊時,遇到什麼麻煩? –