Module: TinySupport::Configable::ClassMethods

Defined in:
app/ables/tiny_support/configable.rb

Instance Method Summary collapse

Instance Method Details

#tiny_support_config(field_name, configs = []) ⇒ Object

field_name: 字段名称 configs: 请传入一个数组


会生成方法:

- 实例方法: # 以 field_name = status 为例
  * status_key
  * status_key=
  * status_key?(a_key)
类方法:
  * status_config


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'app/ables/tiny_support/configable.rb', line 25

def tiny_support_config field_name, configs=[]
  _class_config_name = :"#{field_name}_config".to_sym
  cattr_accessor _class_config_name, :instance_reader => false
  _configs = ::TinyUtil::Config.new(configs)
  self.class_variable_set("@@#{_class_config_name}", _configs)

  scope :status_of, ->(key) do
    where(:status => _configs.find_by_key(_key).value)
  end

  define_method :"#{field_name}" do
    _configs.find_by_value(send(:"#{field_name}_value"))
  end

  define_method :"#{field_name}_key" do
    _configs.find_by_value(send(:"#{field_name}_value")).key
  end

  define_method :"#{field_name}_key=" do |_key|
    send(:"#{field_name}_value=", _configs.find_by_key(_key).value)
  end

  define_method :"#{field_name}_key?" do |_key|
    send(:"#{field_name}_value") == _configs.find_by_key(_key).value
  end

end