0
我正在尝试使用Rails关注(甚至是一个裸模块mixin)来跨我的一些模型共享方法。如何在Rails 4.2中分享数据与担忧?
给出一个简单的模型,我存储一些编码数据在 领域之一:
class DataElement < ActiveRecord::Base
include EmbeddedData
ENCODED = %w(aliases)
end
我再发与管理数据的方法,需要关注的问题:
module EmbeddedData
extend ActiveSupport::Concern
included do
after_find :decode_fields
before_save :encode_fields
@decoded = {}
end
def decoded(key, value = false)
@decoded[key][:value] if @decoded.has_key? key
end
def decode_fields
@decoded = {} if @decoded.nil?
ENCODED.each do |field|
if attributes[field]
@decoded[field] = {
value: JSON.parse(attributes[field]),
dirty: false
}
end
end
end
def encode_fields
ENCODED.each do |field|
if decoded[field] && decoded[field][:dirty]
attributes[field] = @decoded[field][:value].to_json
end
end
end
end
鉴于此设置中,我得到的错误uninitialized constant EmbeddedData::ENCODED
如果我改变参考自我::在关注编码我得到的错误: #是不是一个类/模块
我甚至尝试过关注register_fields
,然后我可以从模型调用,但模型只是抛出未知的方法错误的方法。
在这里用尽想法并寻求帮助。