module ServiceBackupable::AWS
store_accessor :data, :last_backup_at
def backup
...
end
end
$ ServiceBackupable :: AWS
NoMethodError: undefined method `store_accessor' for ServiceBackupable::AWS:Module
解决这个问题包括ActiveRecord :: Store
module ServiceBackupable::AWS
include ActiveRecord::Store
store_accessor :data, :last_backup_at
def backup
...
end
end
$ ServiceBackupable :: AWS
NoMethodError: undefined method `class_attribute' for ServiceBackupable::AWS:Module
from /home/project/.gem/ruby/2.1.0/gems/activerecord-4.1.1/lib/active_record/store.rb:69:in `block in <module:Store>'
如何创建具有商店访问者的模块?
答案 0 :(得分:0)
根据您的代码,我认为模块ServiceBackupable::AWS
旨在用作mixin(即被其他类/模块包含)。如果是这种情况,那么您可以将模块设为ActiveRecord::Concern
。
module ServiceBackupable::AWS
extend ActiveSuport::Concern
include ActiveRecord::Store
included do
store_accessor :data, :last_backup_at
end
end
请注意,方法store_accessor
的评估推迟到包含此模块的类的定义(直接或间接),而不是此模块本身。