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
,然後我可以從模型調用,但模型只是拋出未知的方法錯誤的方法。
在這裏用盡想法並尋求幫助。