我正在使用Ruby on Rails 3.0.7并且我有树类的行为几乎相同(以及它们模型文件中的代码)。所有这些都具有name
和description
属性,运行相同的验证方法,并且两者都有一个before_save
回调,它维护数据一致,提供相同的功能。
我想在一个单独的类\ model 中重构验证方法和回调(我想我必须在我的应用程序的\lib
文件夹中找到它们相关的文件。)
我需要做些什么才能做到这一点?我必须在我的类中添加哪些代码以及重构类\ model中的内容?
答案 0 :(得分:0)
Rails指南在此处有信息:
答案 1 :(得分:0)
好吧,你可以创建一个超级类,你的三个模型继承了它。我倾向于将抽象基类与模型本身一起放在app / models中。
# 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
如果你的东西有许多不同之处,以至于将它们分组是没有意义的,那么你会想要使用一个模块,这只是一个复杂的。