我要做的是扩展ActiveRecord模型,以便在创建类时我可以执行类似
的操作Model < ActiveRecord::Base
foo :bar
end
然后在rake任务中执行类似
的操作if model.foo == :bar
#do some stuff
end
我能够做到的唯一方法是使用
之类的东西module Extender
def self.included(base) # :nodoc:
base.extend ClassMethods
end
module ClassMethods
attr_accessor :fooed
def foo(value)
self.fooed = value
end
end
end
module ActiveRecord
class Base
Include Extender
end
end
然后在rake任务中
if Model.fooed == :bar
#do something now
end
这似乎是一种糟糕的做法,因为然后对于我想要公开的每个属性,我必须实际添加两个属性。我做错了什么,或者这是实现这个目标的首选方式?