Ruby on rails 重构验证方法和回调

Ruby on rails 重构验证方法和回调,ruby-on-rails,ruby,ruby-on-rails-3,class,refactoring,Ruby On Rails,Ruby,Ruby On Rails 3,Class,Refactoring,我使用的是RubyonRails3.0.7,我有树类,它们的行为几乎相同(还有模型文件中的代码)。所有这些都有一个名称和一个描述属性,运行相同的验证方法,并且在保存前都有一个回调,该回调保持数据一致,提供相同的函数 我想在一个单独的类\模型中重构验证方法和回调(我想我必须在我的应用程序的\lib文件夹中找到它们相关的文件) 我要怎么做才能做到这一点?我必须在我的类中添加哪些代码,在重构类\模型中添加哪些代码?Rails指南在这里提供了信息: 好吧,您可以创建一个超级类,从中继承三个模型。我倾向于

我使用的是RubyonRails3.0.7,我有树类,它们的行为几乎相同(还有模型文件中的代码)。所有这些都有一个
名称
和一个
描述
属性,运行相同的验证方法,并且在保存前都有一个
回调,该回调保持数据一致,提供相同的函数

我想在一个单独的类\模型中重构验证方法和回调(我想我必须在我的应用程序的
\lib
文件夹中找到它们相关的文件)


我要怎么做才能做到这一点?我必须在我的类中添加哪些代码,在重构类\模型中添加哪些代码?

Rails指南在这里提供了信息:


好吧,您可以创建一个超级类,从中继承三个模型。我倾向于将抽象基类放在应用程序/模型中,与模型本身放在一起

# 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
#app/models/thing.rb
类对象

如果你的东西有很多不同之处,这样对它们进行分组是没有意义的,那么你应该使用一个模块,这只是稍微复杂一点。

Paul Groves-这是为了验证的目的。。。回拨又如何?此外,我想将所有“重构代码”保留在单独的类\模型中。抱歉……承诺,如果没有正确阅读问题,请不要再发表评论:(FWIW-@rob davis的答案对我来说很好,我在创建多个从不同数据库运行的类时也做了同样的事情。davis-你能给我举个使用模块的例子吗?当你尝试类似的模块时遇到了什么麻烦?