开发者

Refactoring validation methods and callbacks

I am using Ruby on Rails 3.0.7 and I have tree classes what behavior is almost the same (and also the code in them model files). All those have a name and a description attribute, run same validation methods and for both there is a before_save callback that maintains data consistent providing the same functions.

I would like to refactor validation methods and callbacks in a separated class\model (I think I have to locate them related files in the \lib folder of my application).

What I have to do to make that? What code I have to add in my classes and what in the 开发者_如何学Gorefactoring class\model?


Well, you could just make a super class from which your three models inherit. I tend to put the abstract base class in app/models alongside the models themselves.

# 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

If your Things have many differences such that it doesn't make sense to group them like this, you'd want to use a module instead, which is a only bit more complicated.


Rails guides has info here:

http://guides.rubyonrails.org/active_record_validations_callbacks.html#creating-custom-validation-methods

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜