acts_as_enum 1.2.1 → 1.3.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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +16 -0
  3. data/TODO +1 -3
  4. data/VERSION +1 -1
  5. data/lib/acts_as_enum.rb +13 -11
  6. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0f93b4c339f00efab7d18b2adc56bd95fb0fedf8
4
- data.tar.gz: b4aee29c9cd9b44b21edca60880ff5e90a8dfa46
3
+ metadata.gz: 00e1befcc950cf4fc093bea43536a6c6c5f9e324
4
+ data.tar.gz: 339904c036a720d6195bf3dfeced23ce427e4ea9
5
5
  SHA512:
6
- metadata.gz: cfb6c41f711b72f74907f503830e606cd0ab438203437745a317485c7910334904a4238ce222751ffb9cd03796916ef84de058a122ec9ec4238c0844c59c6a88
7
- data.tar.gz: 9d9e1f914f13006114e8c109c674bd957bc3d8b9e5dd29dc3299ed23bb1acb46ec7a2287893c52133c0a8428283b8de958e8caaa17b9cd13cfcbca05f8b5510a
6
+ metadata.gz: f3273e040dcb1806f533a0876490f2fd50bcb87248d4c08b1834168426c567098c56dbb9470f3cd243ad7233ed56267e0d5a4f35c55c2064e3eb18ddf3418d4b
7
+ data.tar.gz: 65df571ec89213facf734046207e55f79b6b4155f3d0cfc68541531cd7b1eeb6c3b566c6433b7555da9646553657c4b8597b60879504e6729c3b97f991c78a22
data/README.rdoc CHANGED
@@ -23,12 +23,28 @@ or, to install as a plugin:
23
23
 
24
24
  == Usage
25
25
 
26
+ Default
27
+
28
+ class User < ActiveRecord::Base
29
+ enum_attr :status, :in => %w(disable, enable)
30
+ end
31
+
26
32
  Table column type as String
27
33
 
28
34
  class User < ActiveRecord::Base
29
35
  acts_as_enum :status, :in => [ ['disable', '冻结'], ['enable', '激活'] ]
30
36
  end
31
37
 
38
+ Or
39
+
40
+ class User < ActiveRecord::Base
41
+ acts_as_enum :status, :in => { 'disable' => '冻结', { 'enable', '激活' }
42
+ end
43
+
44
+ class User < ActiveRecord::Base
45
+ enum_attr :status, :in => { 'disable' => '冻结', { 'enable', '激活' }
46
+ end
47
+
32
48
  Table column type as Integer
33
49
 
34
50
  class User < ActiveRecord::Base
data/TODO CHANGED
@@ -1,5 +1,3 @@
1
1
  会继续添加如下功能
2
2
 
3
- 1) 将会支持in里面的数组元素是符号类型
4
-
5
- 2) 将会支参数in是Hash类型
3
+ 1) 将会支持in里面的数组元素是符号类型
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.1
1
+ 1.3.0
data/lib/acts_as_enum.rb CHANGED
@@ -5,11 +5,18 @@
5
5
  # options incldue :in, :prefix
6
6
  # :in value as Array [ [value, label], ... ] or [ [special_method_name, value, label], ... ]
7
7
  # :prefix value as true or false
8
+ #
9
+ # class User < ActiveRecord::Base
10
+ # acts_as_enum :status, :in => %w(disable, enable)
11
+ # end
8
12
  #
9
13
  # table column status type is Varchar or Varchar2
10
14
  # class User < ActiveRecord::Base
11
15
  # acts_as_enum :status, :in => [ ['disable', '冻结'], ['enable', '激活'] ]
12
16
  # end
17
+ # class User < ActiveRecord::Base
18
+ # acts_as_enum :status, :in => { 'disable' => '冻结', { 'enable', '激活' }
19
+ # end
13
20
  #
14
21
  # and type is Integer or number of string
15
22
  # NOTE: table column value must be match type, i.e. varchar: '1'; integer: 1
@@ -61,25 +68,20 @@ module ActsAsEnum
61
68
  enum = enum.inject([]) { |arr, obj| arr << [obj] * 2 }
62
69
  end
63
70
 
64
- is_key_value_enum = enum.first.size == 2 ? true : false
65
-
66
- attr_options = enum.inject({}) do |hash, arr|
67
- hash[is_key_value_enum ? arr.first : arr[1]] = arr.last.to_s
68
- hash
71
+ attr_options = enum.each_with_object({}) do |arr, hash|
72
+ hash[arr[-2]] = arr.last.to_s
69
73
  end
70
74
  const_set(plural_upcase_attr, attr_options)
71
75
 
72
76
  enum.each do |arr|
73
77
  enum_name = arr.first.to_s.downcase
74
- attr_value = is_key_value_enum ? arr.first : arr[1]
78
+ attr_value = arr[-2]
75
79
  method_name = options[:prefix] ? "#{attr}_#{enum_name}" : enum_name
76
80
 
77
- const_set("#{method_name}".upcase, attr_value)
81
+ const_set(method_name.upcase, attr_value)
78
82
 
79
- if Rails.version =~ /^4/
80
- scope method_name.to_sym, -> { where(["#{self.table_name}.#{attr} = ?", attr_value]) }
81
- elsif Rails.version =~ /^3/
82
- scope method_name.to_sym, where(["#{self.table_name}.#{attr} = ?", attr_value])
83
+ if Rails.version =~ /^[34]/
84
+ scope method_name.to_sym, -> { where(attr => attr_value) }
83
85
  else
84
86
  named_scope method_name.to_sym, :conditions => { attr.to_sym => attr_value }
85
87
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Liang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-13 00:00:00.000000000 Z
11
+ date: 2015-11-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: For multiple values activerecord attributes. This gem have some very
14
14
  useful methods and constants for attribute.
@@ -45,7 +45,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
45
45
  version: 1.3.4
46
46
  requirements: []
47
47
  rubyforge_project: acts_as_enum
48
- rubygems_version: 2.2.2
48
+ rubygems_version: 2.4.7
49
49
  signing_key:
50
50
  specification_version: 4
51
51
  summary: Enum Attribute for Rails ActiveRecord