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.
11
12
13
14
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
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 11
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")
::I18n.available_locales.each do |k|
self.class.send(:define_method, k, proc{self.instance_variable_get("@#{k}")})
self.class.send(:define_method, "#{k}=", proc{|v| self.instance_variable_set("@#{k}", v)})
self.instance_variable_set("@#{k}", '')
end
hash.each do |k,v|
self.instance_variable_set("@#{k}", 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
63
64
65
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 63
def method_missing(*args)
@obj.send(*args)
end
|
Class Method Details
.before_validation ⇒ Object
36
37
38
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 36
def @obj.before_validation
validate!
end
|
.human_attribute_name(*args) ⇒ Object
75
76
77
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 75
def self.human_attribute_name(*args)
@@model.send(:human_attribute_name, *args)
end
|
.validators_on(attributized_method_name) ⇒ Object
71
72
73
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 71
def self.validators_on(attributized_method_name)
@@validators[attributized_method_name].nil? ? [] : @@validators[attributized_method_name]
end
|
Instance Method Details
#column_for_attribute(name) ⇒ Object
58
59
60
61
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 58
def column_for_attribute(name)
@obj.fields[@field]
end
|
#errors ⇒ Object
45
46
47
48
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 45
def errors
validate! if @obj.errors.any?
@errors
end
|
#required? ⇒ Boolean
41
42
43
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 41
def required?
@required
end
|
#respond_to?(method_name, include_private = false) ⇒ Boolean
67
68
69
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 67
def respond_to?(method_name, include_private = false)
@obj.respond_to?(method_name, include_private)
end
|
#validate! ⇒ Object
50
51
52
53
54
55
56
|
# File 'lib/activeadmin-mongoid-localize/field.rb', line 50
def validate!
::I18n.available_locales.each do |k|
if @required && send(k).blank?
@errors.add(k, I18n.t('errors.messages.blank'))
end
end
end
|