Sha256: 3fafe3a9d929bee2b1510f8e6c704c0fd7ef42b52819cd5dba24d4e37d544f39
Contents?: true
Size: 1.07 KB
Versions: 7
Compression:
Stored size: 1.07 KB
Contents
class MLS::Attribute DEFAULT_OPTIONS = { :serialize => :always } attr_reader :model, :name, :instance_variable_name, :options, :default attr_reader :reader_visibility, :writer_visibility def initialize(name, options={}) @name = name @instance_variable_name = "@#{@name}".freeze @options = DEFAULT_OPTIONS.merge(options) set_default_value determine_visibility end def set_default_value @default = @options[:default] end def determine_visibility # default :public @reader_visibility = @options[:reader] || :public @writer_visibility = @options[:writer] || :public end def self.determine_class(type) return type if type < MLS::Attribute find_class(::ActiveSupport::Inflector.demodulize(type)) end def self.inherited(descendant) demodulized_names[::ActiveSupport::Inflector.demodulize(descendant.name)] ||= descendant end def self.demodulized_names @demodulized_names ||= {} end def self.find_class(name) klass = demodulized_names[name] klass ||= const_get(name) if const_defined?(name) klass end end
Version data entries
7 entries across 7 versions & 1 rubygems