Class: ActiveAdmin::Mongoid::Localize::Field
- Inherits:
-
Object
- Object
- ActiveAdmin::Mongoid::Localize::Field
show all
- Extended by:
- ActiveModel::Naming
- Defined in:
- lib/activeadmin-mongoid-localize/field.rb
Constant Summary
collapse
- @@validators =
{}
- @@model =
nil
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(obj, name) ⇒ Field
Returns a new instance of Field.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 15
def initialize(obj, name)
@obj = obj
@@model = obj.class
@field = name
@@validators[@field] = @obj.class.validators_on(name.to_sym)
@required = @@validators[@field].map(&:class).map(&:name).include? 'Mongoid::Validations::PresenceValidator'
@errors = ActiveModel::Errors.new(self)
hash = @obj.send("#{name}_translations")
::ActiveAdmin::Mongoid::Localize.locales.each do |k|
inst_var_name = clean_locale(k)
self.class.send(:define_method, k, proc{self.instance_variable_get("@#{inst_var_name}")})
self.class.send(:define_method, "#{k}=", proc{|v| self.instance_variable_set("@#{inst_var_name}", v)})
self.instance_variable_set("@#{inst_var_name}", '')
end
hash.each do |k,v|
inst_var_name = k.to_s.gsub('-','_')
self.instance_variable_set("@#{inst_var_name}", v)
end
def @obj.before_validation
validate!
end
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(*args) ⇒ Object
69
70
71
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 69
def method_missing(*args)
@obj.send(*args)
end
|
Class Method Details
.before_validation ⇒ Object
42
43
44
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 42
def @obj.before_validation
validate!
end
|
.human_attribute_name(*args) ⇒ Object
81
82
83
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 81
def self.human_attribute_name(*args)
@@model.send(:human_attribute_name, *args)
end
|
.validators_on(attributized_method_name) ⇒ Object
77
78
79
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 77
def self.validators_on(attributized_method_name)
@@validators[attributized_method_name].nil? ? [] : @@validators[attributized_method_name]
end
|
Instance Method Details
#clean_locale(locale) ⇒ Object
11
12
13
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 11
def clean_locale(locale)
locale.to_s.gsub('-','_')
end
|
#column_for_attribute(name) ⇒ Object
64
65
66
67
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 64
def column_for_attribute(name)
@obj.fields[@field]
end
|
#errors ⇒ Object
51
52
53
54
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 51
def errors
validate! if @obj.errors.any?
@errors
end
|
#required? ⇒ Boolean
47
48
49
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 47
def required?
@required
end
|
#respond_to?(method_name, include_private = false) ⇒ Boolean
73
74
75
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 73
def respond_to?(method_name, include_private = false)
@obj.respond_to?(method_name, include_private)
end
|
#validate! ⇒ Object
56
57
58
59
60
61
62
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 56
def validate!
::ActiveAdmin::Mongoid::Localize.locales.each do |k|
if @required && send(k).blank?
@errors.add(k, I18n.t('errors.messages.blank'))
end
end
end
|