attribute_enums 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -3
- data/.rspec +1 -0
- data/CHANGELOG +4 -0
- data/Gemfile +1 -1
- data/README.markdown +61 -59
- data/attribute_enums.gemspec +5 -16
- data/lib/attribute_enums.rb +0 -4
- data/lib/attribute_enums/active_record.rb +122 -0
- data/lib/attribute_enums/common.rb +168 -0
- data/lib/attribute_enums/railtie.rb +2 -2
- data/lib/attribute_enums/version.rb +1 -1
- data/spec/common_and_active_record/ask_methods_options_spec.rb +58 -0
- data/spec/common_and_active_record/attribute_name_spec.rb +7 -0
- data/spec/common_and_active_record/boolean_options_spec.rb +43 -0
- data/spec/common_and_active_record/default_options_spec.rb +77 -0
- data/spec/common_and_active_record/i18n_options_spec.rb +116 -0
- data/spec/common_and_active_record/in_options_spec.rb +38 -0
- data/spec/common_and_active_record/readme_user_example_spec.rb +87 -0
- data/spec/common_and_active_record/scopeds_options_spec.rb +114 -0
- data/spec/common_and_active_record/validate_options_spec.rb +82 -0
- data/spec/spec_helper.rb +5 -12
- data/spec/support/locales/person_en.yml +14 -0
- data/spec/support/locales/person_zh-CN.yml +14 -0
- data/spec/support/locales/user_en.yml +7 -15
- data/spec/support/models/person.rb +23 -0
- metadata +34 -229
- data/Guardfile +0 -22
- data/lib/attribute_enums/active_record_extension.rb +0 -88
- data/spec/models/active_record/user_spec.rb +0 -67
- data/spec/rails3_0_app/.gitignore +0 -4
- data/spec/rails3_0_app/.rspec +0 -1
- data/spec/rails3_0_app/Gemfile +0 -13
- data/spec/rails3_0_app/Rakefile +0 -7
- data/spec/rails3_0_app/app/controllers/application_controller.rb +0 -3
- data/spec/rails3_0_app/app/helpers/application_helper.rb +0 -2
- data/spec/rails3_0_app/app/models/user.rb +0 -2
- data/spec/rails3_0_app/app/views/layouts/application.html.erb +0 -14
- data/spec/rails3_0_app/config.ru +0 -4
- data/spec/rails3_0_app/config/application.rb +0 -44
- data/spec/rails3_0_app/config/boot.rb +0 -6
- data/spec/rails3_0_app/config/database.yml +0 -19
- data/spec/rails3_0_app/config/environment.rb +0 -6
- data/spec/rails3_0_app/config/environments/development.rb +0 -26
- data/spec/rails3_0_app/config/environments/production.rb +0 -49
- data/spec/rails3_0_app/config/environments/test.rb +0 -35
- data/spec/rails3_0_app/config/initializers/backtrace_silencers.rb +0 -7
- data/spec/rails3_0_app/config/initializers/inflections.rb +0 -10
- data/spec/rails3_0_app/config/initializers/mime_types.rb +0 -5
- data/spec/rails3_0_app/config/initializers/secret_token.rb +0 -7
- data/spec/rails3_0_app/config/initializers/session_store.rb +0 -8
- data/spec/rails3_0_app/config/locales/en.yml +0 -5
- data/spec/rails3_0_app/config/routes.rb +0 -58
- data/spec/rails3_0_app/db/migrate/20111129011508_create_users.rb +0 -14
- data/spec/rails3_0_app/db/schema.rb +0 -23
- data/spec/rails3_0_app/db/seeds.rb +0 -7
- data/spec/rails3_0_app/lib/tasks/.gitkeep +0 -0
- data/spec/rails3_0_app/public/404.html +0 -26
- data/spec/rails3_0_app/public/422.html +0 -26
- data/spec/rails3_0_app/public/500.html +0 -26
- data/spec/rails3_0_app/public/favicon.ico +0 -0
- data/spec/rails3_0_app/public/images/rails.png +0 -0
- data/spec/rails3_0_app/public/index.html +0 -239
- data/spec/rails3_0_app/public/robots.txt +0 -5
- data/spec/rails3_0_app/public/stylesheets/.gitkeep +0 -0
- data/spec/rails3_0_app/script/rails +0 -6
- data/spec/rails3_0_app/vendor/plugins/.gitkeep +0 -0
data/.gitignore
CHANGED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/CHANGELOG
CHANGED
data/Gemfile
CHANGED
data/README.markdown
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
#AttributeEnums
|
2
2
|
|
3
|
-
AttributeEnums is a model attribute enums plugin for Rails3.
|
3
|
+
AttributeEnums is a model attribute enums plugin for Rails3.
|
4
4
|
|
5
5
|
* https://github.com/vkill/attribute_enums
|
6
6
|
|
7
7
|
##Supported versions
|
8
8
|
|
9
|
-
* Ruby 1.
|
9
|
+
* Ruby 1.9
|
10
10
|
|
11
|
-
* Rails 3
|
11
|
+
* Rails 3
|
12
12
|
|
13
13
|
|
14
14
|
##Installation
|
@@ -17,9 +17,11 @@ In your app's `Gemfile`, add:
|
|
17
17
|
|
18
18
|
gem "attribute_enums"
|
19
19
|
|
20
|
-
|
20
|
+
or
|
21
21
|
|
22
|
-
|
22
|
+
gem "attribute_enums", require: "attribute_enums/active_record"
|
23
|
+
#app/models/xxx.rb
|
24
|
+
include ::AttributeEnums::ActiveRecord
|
23
25
|
|
24
26
|
|
25
27
|
##Usage Example
|
@@ -41,94 +43,94 @@ Then run:
|
|
41
43
|
|
42
44
|
#app/models/user.rb
|
43
45
|
class User < ActiveRecord::Basse
|
44
|
-
attribute_enums :gender, :
|
45
|
-
attribute_enums :enable, :
|
46
|
+
attribute_enums :gender, in: [:female, :male], default: :male, scopeds: true, ask_methods: true, i18n: true, validate: true
|
47
|
+
attribute_enums :enable, boolean: true, default: true, scopeds: :disable, i18n: {t_prefix: :person_}
|
46
48
|
end
|
47
49
|
|
50
|
+
# in config/locales/enums_en.yml
|
51
|
+
en:
|
52
|
+
enums:
|
53
|
+
gender:
|
54
|
+
female: Girl
|
55
|
+
male: Boy
|
56
|
+
enable:
|
57
|
+
"true": "Enable"
|
58
|
+
"false": "Disable"
|
59
|
+
person_gender:
|
60
|
+
female: Girl
|
61
|
+
male: Boy
|
62
|
+
person_enable:
|
63
|
+
"true": "Enable"
|
64
|
+
"false": "Disable"
|
48
65
|
|
49
66
|
##Options
|
50
67
|
|
51
|
-
###
|
68
|
+
###in or boolean
|
52
69
|
|
53
|
-
|
70
|
+
if use 'boolean', auto ignore 'in'.
|
54
71
|
|
55
|
-
|
72
|
+
this option generate get_attr_values and attr_text methods
|
56
73
|
|
57
|
-
|
58
|
-
|
59
|
-
|
74
|
+
#active_record
|
75
|
+
User.get_gender_values
|
76
|
+
User.get_enable_values
|
77
|
+
user = User.new(gender: :male, enable: true)
|
78
|
+
user.gender_text
|
79
|
+
user.enable_text
|
60
80
|
|
61
|
-
|
81
|
+
you can use get_attr_values on rails `select` helper and more.
|
62
82
|
|
63
83
|
###i18n and use example
|
64
84
|
|
65
|
-
default `
|
85
|
+
default `false`
|
66
86
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
enable: Enable
|
76
|
-
enums:
|
77
|
-
user:
|
78
|
-
gender:
|
79
|
-
female: Girl
|
80
|
-
male: Boy
|
81
|
-
enable:
|
82
|
-
"true": "Yes"
|
83
|
-
"false": "No"
|
87
|
+
set `true`, i18n is valid get_attr_values and attr_text methods.
|
88
|
+
|
89
|
+
#active_record
|
90
|
+
User.get_gender_values #=> [["Girl", "female"], ["Boy", "male"]]
|
91
|
+
User.get_enable_values #=> [["Enable", true], ["Disable", false]]
|
92
|
+
user = User.new(gender: :male, enable: true)
|
93
|
+
user.gender_text #=> "Boy"
|
94
|
+
user.enable_text #=> "Enable"
|
84
95
|
|
85
96
|
###scopes and use example
|
86
97
|
|
87
|
-
default `
|
98
|
+
default `false`
|
88
99
|
|
89
100
|
#active_record
|
90
|
-
User.male
|
91
|
-
User.female
|
92
|
-
User.enable
|
93
|
-
User.
|
101
|
+
User.male #=> User.where(gender: :male)
|
102
|
+
User.female #=> User.where(gender: :female)
|
103
|
+
User.enable #=> User.where(enable: true)
|
104
|
+
User.disable #=> User.where(enable: false)
|
94
105
|
|
95
106
|
###validate
|
96
107
|
|
97
|
-
default `
|
108
|
+
default `false`, it only support `in` option.
|
98
109
|
|
99
|
-
|
110
|
+
if you want support attribute value is nil, you can use `validate: {allow_nil: true}`
|
100
111
|
|
101
|
-
|
112
|
+
###ask_methods and use example
|
102
113
|
|
103
|
-
|
104
|
-
|
105
|
-
default `true`
|
114
|
+
default `false`, it only support `in` option.
|
106
115
|
|
107
116
|
#active_record
|
108
|
-
User.
|
109
|
-
|
110
|
-
|
111
|
-
User.enable_values => {true=>"Yes", false=>"No"}
|
112
|
-
user = User.create(:gender => :male, :enable => true)
|
113
|
-
user.gender_text => "Boy"
|
114
|
-
user.enable_text => "Yes"
|
115
|
-
user.male? => true
|
116
|
-
user.female? => false
|
117
|
-
user.enable => true
|
117
|
+
user = User.new(gender: :male, enable: true)
|
118
|
+
user.male? #=> true
|
119
|
+
user.female? #=> false
|
118
120
|
|
119
121
|
###default
|
120
122
|
|
121
123
|
if your defined `default`, it set attribute `default` value before validate.
|
122
124
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
125
|
+
#active_record
|
126
|
+
user = User.new
|
127
|
+
user.valid?
|
128
|
+
user.gender #=> :male
|
127
129
|
|
128
|
-
|
130
|
+
Note: if your migration defined field default, this is invalidation.
|
129
131
|
|
130
132
|
|
131
133
|
##Copyright
|
132
134
|
|
133
|
-
Copyright (c) 2011 vkill.net .
|
135
|
+
Copyright (c) 2011-2013 vkill.net .
|
134
136
|
|
data/attribute_enums.gemspec
CHANGED
@@ -18,20 +18,9 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
s.add_development_dependency
|
22
|
-
s.add_development_dependency "
|
23
|
-
s.add_development_dependency "
|
24
|
-
s.add_development_dependency "
|
25
|
-
|
26
|
-
s.add_development_dependency "rails", "~> 3.0"
|
27
|
-
s.add_development_dependency "sqlite3-ruby"
|
28
|
-
s.add_development_dependency "rspec-rails", "~> 2.7.0"
|
29
|
-
s.add_development_dependency "capybara"
|
30
|
-
s.add_development_dependency "timecop"
|
31
|
-
s.add_development_dependency "pry"
|
32
|
-
s.add_development_dependency "pry-padrino"
|
33
|
-
|
34
|
-
s.add_dependency "activerecord", "~> 3.0"
|
35
|
-
s.add_dependency "activesupport", "~> 3.0"
|
21
|
+
s.add_development_dependency "activerecord"
|
22
|
+
s.add_development_dependency "sqlite3"
|
23
|
+
s.add_development_dependency "i18n"
|
24
|
+
s.add_development_dependency "rspec-rails", '~> 2.13.0'
|
25
|
+
|
36
26
|
end
|
37
|
-
|
data/lib/attribute_enums.rb
CHANGED
@@ -0,0 +1,122 @@
|
|
1
|
+
module AttributeEnums
|
2
|
+
end
|
3
|
+
|
4
|
+
require "attribute_enums/version"
|
5
|
+
require "attribute_enums/common"
|
6
|
+
|
7
|
+
module AttributeEnums
|
8
|
+
module ActiveRecord
|
9
|
+
|
10
|
+
def self.included base
|
11
|
+
base.extend(ClassMethods)
|
12
|
+
base.extend(AttributeEnums::Common)
|
13
|
+
end
|
14
|
+
|
15
|
+
module ClassMethods
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def _ae_set_default
|
20
|
+
set_defaule_method_name = "set_defaule_#{@_ae_attribute_name}"
|
21
|
+
if @_ae_boolean
|
22
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
23
|
+
def #{set_defaule_method_name}
|
24
|
+
write_attribute(:#{@_ae_attribute_name}, #{@_ae_default}) if read_attribute(:#{@_ae_attribute_name}).nil?
|
25
|
+
end
|
26
|
+
RUBY
|
27
|
+
else
|
28
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
29
|
+
def #{set_defaule_method_name}
|
30
|
+
write_attribute(:#{@_ae_attribute_name}, :#{@_ae_default}) if read_attribute(:#{@_ae_attribute_name}).nil?
|
31
|
+
end
|
32
|
+
RUBY
|
33
|
+
end
|
34
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
35
|
+
before_validation :#{set_defaule_method_name}
|
36
|
+
RUBY
|
37
|
+
end
|
38
|
+
|
39
|
+
def _ae_set_string_ask_methods
|
40
|
+
@_ae_in.each do |_in|
|
41
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
42
|
+
def #{_ae_ask_methods_string_attribute_method_name(_in)}
|
43
|
+
read_attribute(:#{@_ae_attribute_name}).to_s == '#{_in}'
|
44
|
+
end
|
45
|
+
RUBY
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def _ae_set_string_scopeds
|
50
|
+
@_ae_in.each do |_in|
|
51
|
+
# scope _ae_scopeds_string_attribute_method_name(_in), ->{ where(@_ae_attribute_name => _in) }
|
52
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
53
|
+
scope :#{_ae_scopeds_string_attribute_method_name(_in)}, ->{ where(:#{@_ae_attribute_name} => :#{_in}) }
|
54
|
+
RUBY
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def _ae_set_boolean_scopeds
|
59
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
60
|
+
scope :#{@_ae_attribute_name}, ->{ where(:#{@_ae_attribute_name} => true) }
|
61
|
+
RUBY
|
62
|
+
if @_ae_scopeds.is_a?(Symbol)
|
63
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
64
|
+
scope :#{@_ae_scopeds}, ->{ where(:#{@_ae_attribute_name} => false) }
|
65
|
+
RUBY
|
66
|
+
puts "scope :#{@_ae_scopeds}, ->{ where(:#{@_ae_attribute_name} => false) }"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def _attribute_name_set_string_validate
|
71
|
+
unless @_ae_validate.is_a?(Hash) and !@_ae_validate[:allow_nil].nil?
|
72
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
73
|
+
validates :#{@_ae_attribute_name}, presence: true
|
74
|
+
RUBY
|
75
|
+
end
|
76
|
+
|
77
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
78
|
+
validates :#{@_ae_attribute_name}, inclusion: {in: #{@_ae_inclusion}}, unless: :"read_attribute(:#{@_ae_attribute_name}).nil?"
|
79
|
+
RUBY
|
80
|
+
end
|
81
|
+
|
82
|
+
def _attribute_name_set_boolean_text_method
|
83
|
+
if @_ae_i18n and defined?(::I18n)
|
84
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
85
|
+
def #{_ae_text_method_name}
|
86
|
+
return '' if read_attribute(:#{@_ae_attribute_name}).nil?
|
87
|
+
I18n.translate('enums.%s%s.%s' % [self.class.send(:_ae_i18n_t_prefix), :#{@_ae_attribute_name}, read_attribute(:#{@_ae_attribute_name})])
|
88
|
+
end
|
89
|
+
RUBY
|
90
|
+
else
|
91
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
92
|
+
def #{_ae_text_method_name}
|
93
|
+
return '' if read_attribute(:#{@_ae_attribute_name}).nil?
|
94
|
+
read_attribute(:#{@_ae_attribute_name}) ? 'Yes' : 'No'
|
95
|
+
end
|
96
|
+
RUBY
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def _attribute_name_set_string_text_method
|
101
|
+
if @_ae_i18n and defined?(::I18n)
|
102
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
103
|
+
def #{_ae_text_method_name}
|
104
|
+
return '' if read_attribute(:#{@_ae_attribute_name}).nil?
|
105
|
+
I18n.translate('enums.%s%s.%s' % [self.class.send(:_ae_i18n_t_prefix), :#{@_ae_attribute_name}, read_attribute(:#{@_ae_attribute_name})])
|
106
|
+
end
|
107
|
+
RUBY
|
108
|
+
else
|
109
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
110
|
+
def #{_ae_text_method_name}
|
111
|
+
return '' if read_attribute(:#{@_ae_attribute_name}).nil?
|
112
|
+
read_attribute(:#{@_ae_attribute_name}).to_s
|
113
|
+
end
|
114
|
+
RUBY
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
|
@@ -0,0 +1,168 @@
|
|
1
|
+
module AttributeEnums
|
2
|
+
module Common
|
3
|
+
|
4
|
+
def attribute_enums(attribute_name, options={})
|
5
|
+
_ae_init_instance_variables
|
6
|
+
|
7
|
+
@_ae_attribute_name = attribute_name.to_s
|
8
|
+
|
9
|
+
@_ae_in = options.has_key?(:in) ? Array(options.delete(:in)) : []
|
10
|
+
@_ae_boolean = options.has_key?(:boolean) ? options.delete(:boolean) : false
|
11
|
+
@_ae_default = options.has_key?(:default) ? options.delete(:default) : nil
|
12
|
+
@_ae_ask_methods = options.has_key?(:ask_methods) ? options.delete(:ask_methods) : false
|
13
|
+
@_ae_scopeds = options.has_key?(:scopeds) ? options.delete(:scopeds) : false
|
14
|
+
@_ae_validate = options.has_key?(:validate) ? options.delete(:validate) : false
|
15
|
+
@_ae_i18n = options.has_key?(:i18n) ? options.delete(:i18n) : false
|
16
|
+
|
17
|
+
|
18
|
+
# build _in
|
19
|
+
if @_ae_boolean
|
20
|
+
@_ae_in = [true, false]
|
21
|
+
@_ae_inclusion = @_ae_in
|
22
|
+
else
|
23
|
+
return if @_ae_in.empty?
|
24
|
+
@_ae_in = @_ae_in.map{|x| x.to_s.to_sym}.uniq.flatten.delete_if{|y| y.empty?}
|
25
|
+
return if @_ae_in.empty?
|
26
|
+
@_ae_inclusion = @_ae_in.map{|x| [x, x.to_s]}.flatten
|
27
|
+
end
|
28
|
+
|
29
|
+
unless @_ae_default.nil?
|
30
|
+
raise 'default value not match' unless @_ae_inclusion.include?(@_ae_default)
|
31
|
+
end
|
32
|
+
|
33
|
+
_ae_set_default unless @_ae_default.nil?
|
34
|
+
if @_ae_scopeds
|
35
|
+
if @_ae_boolean
|
36
|
+
_ae_set_boolean_scopeds
|
37
|
+
else
|
38
|
+
_ae_set_string_scopeds
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
if @_ae_boolean
|
44
|
+
_attribute_name_set_boolean_values_method
|
45
|
+
_attribute_name_set_boolean_text_method
|
46
|
+
else
|
47
|
+
_attribute_name_set_string_values_method
|
48
|
+
_attribute_name_set_string_text_method
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
unless @_ae_boolean
|
53
|
+
_ae_set_string_ask_methods if @_ae_ask_methods
|
54
|
+
_attribute_name_set_string_validate if @_ae_validate
|
55
|
+
end
|
56
|
+
|
57
|
+
_ae_remove_instance_variables
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def _ae_instance_variable_names
|
65
|
+
%w(attribute_name in boolean default ask_methods scopeds validate i18n inclusion)
|
66
|
+
end
|
67
|
+
|
68
|
+
def _ae_init_instance_variables
|
69
|
+
_ae_instance_variable_names.each do |name|
|
70
|
+
instance_variable_set "@_ae_#{name}", nil
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def _ae_remove_instance_variables
|
75
|
+
_ae_instance_variable_names.each do |name|
|
76
|
+
remove_instance_variable "@_ae_#{name}"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def _ae_valid_prefix?(prefix)
|
81
|
+
(prefix.is_a?(String) or prefix.is_a?(Symbol)) and !prefix.empty?
|
82
|
+
end
|
83
|
+
|
84
|
+
def _ae_ask_methods_string_attribute_method_name(_in)
|
85
|
+
prefix = ''
|
86
|
+
if @_ae_ask_methods.is_a?(Hash)
|
87
|
+
_prefix = @_ae_ask_methods[:prefix]
|
88
|
+
if (_prefix.is_a?(String) or _prefix.is_a?(Symbol)) and !_prefix.empty?
|
89
|
+
prefix = _prefix
|
90
|
+
end
|
91
|
+
end
|
92
|
+
("%s%s?" % [prefix, _in]).to_sym
|
93
|
+
end
|
94
|
+
|
95
|
+
def _ae_scopeds_string_attribute_method_name(_in)
|
96
|
+
prefix = ''
|
97
|
+
if @_ae_scopeds.is_a?(Hash)
|
98
|
+
_prefix = @_ae_scopeds[:prefix]
|
99
|
+
if _ae_valid_prefix?(_prefix)
|
100
|
+
prefix = _prefix
|
101
|
+
end
|
102
|
+
end
|
103
|
+
("%s%s" % [prefix, _in]).to_sym
|
104
|
+
end
|
105
|
+
|
106
|
+
def _ae_values_method_name
|
107
|
+
("get_%s_values" % @_ae_attribute_name).to_sym
|
108
|
+
end
|
109
|
+
|
110
|
+
def _ae_text_method_name
|
111
|
+
("%s_text" % @_ae_attribute_name).to_sym
|
112
|
+
end
|
113
|
+
|
114
|
+
def _ae_i18n_t_prefix
|
115
|
+
t_prefix = ''
|
116
|
+
if @_ae_scopeds.is_a?(Hash)
|
117
|
+
_t_prefix = @_ae_scopeds[:t_prefix]
|
118
|
+
t_prefix = _t_prefix if _ae_valid_prefix?(_t_prefix)
|
119
|
+
end
|
120
|
+
t_prefix
|
121
|
+
end
|
122
|
+
|
123
|
+
|
124
|
+
def _attribute_name_set_boolean_values_method
|
125
|
+
if @_ae_i18n and defined?(::I18n)
|
126
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
127
|
+
def self.#{_ae_values_method_name}
|
128
|
+
#{@_ae_in}.map do |_in|
|
129
|
+
[I18n.translate('enums.%s%s.%s' % ['#{_ae_i18n_t_prefix}', :#{@_ae_attribute_name}, _in]), _in]
|
130
|
+
end
|
131
|
+
end
|
132
|
+
RUBY
|
133
|
+
else
|
134
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
135
|
+
def self.#{_ae_values_method_name}
|
136
|
+
#{@_ae_in}.map do |_in|
|
137
|
+
[(_in ? 'Yes' : 'No'), _in]
|
138
|
+
end
|
139
|
+
end
|
140
|
+
RUBY
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
def _attribute_name_set_string_values_method
|
145
|
+
if @_ae_i18n and defined?(::I18n)
|
146
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
147
|
+
def self.#{_ae_values_method_name}
|
148
|
+
#{@_ae_in}.map do |_in|
|
149
|
+
[I18n.translate('enums.%s%s.%s' % ['#{_ae_i18n_t_prefix}', :#{@_ae_attribute_name}, _in]), _in.to_s]
|
150
|
+
end
|
151
|
+
end
|
152
|
+
RUBY
|
153
|
+
else
|
154
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
155
|
+
def self.#{_ae_values_method_name}
|
156
|
+
#{@_ae_in}.map do |_in|
|
157
|
+
[_in.to_s, _in.to_s]
|
158
|
+
end
|
159
|
+
end
|
160
|
+
RUBY
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
|
165
|
+
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|