Я предполагаю, что вы хотите один набор publishing_options
на класс. В этом случае вы просто хотите префикс вашей переменной с одним @
. Помните, что сам класс является экземпляром класса Class
, поэтому, когда вы находитесь в контексте метода класса, вы действительно хотите установить переменную экземпляра для вашего класса. Примерно так:
module Publishable
module ClassMethods
def publishable(options)
@publishing_options = options
end
def publishing_options
@publishing_options
end
end
def self.included(base)
base.extend(ClassMethods)
end
end
Тогда, если ActiveRecord :: Base расширяется следующим образом:
ActiveRecord::Base.send :include, Publishable
Вы можете сделать:
class Note < ActiveRecord::Base
publishable :related_attributes => [:taggings]
end
class Other < ActiveRecord::Base
publishable :related_attributes => [:other]
end
Note.publishing_options
=> {:related_attributes=>[:taggings]}
Other.publishing_options
=> {:related_attributes=>[:other]}