创建像ActiveRecord方法一样的rails

时间:2015-03-11 20:45:17

标签: ruby-on-rails ruby activerecord

我要做的是扩展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

这似乎是一种糟糕的做法,因为然后对于我想要公开的每个属性,我必须实际添加两个属性。我做错了什么,或者这是实现这个目标的首选方式?

0 个答案:

没有答案