我有两个几乎相同的模型。我想创建一个或多个 mixin,以便我可以在这些模型之间共享行为。这是一个示例模型,其中包括我能想到的所有变体:
class Model < ActiveRecord::Base
STATUS_OPTIONS = ['new', 'approved', 'rejected', 'deleted']
attr_accessible :status
validates_inclusion_of :status, :in => STATUS_OPTIONS
def self.custom_finder(status)
find_by_status(status)
end
def simple_instance_method
'easy'
end
end
我了解从 Ruby 模块中包含实例方法的一些基础知识,但是当涉及到更高级的东西(如 ActiveRecord 类方法、常量等)时,我感到很困惑。
module ModelClassMethods
def custom_finder(status)
find_by_status(status)
end
end
module ModelInstanceMethods
def simple_instance_method
'easy'
end
end
class Model < ActiveRecord::Base
STATUS_OPTIONS = ['new', 'approved', 'rejected', 'deleted']
attr_accessible :status
validates_inclusion_of :status, :in => STATUS_OPTIONS
extend ModelClassMethods
include ModelInstanceMethods
end
现在如何提取常量和验证方法?