ar_binary_flag_attributes 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,73 @@
1
1
  = ar_binary_flag_attributes
2
2
 
3
- Coming soon.
3
+ Adds many binary/flag attributes to your AR model using only one integer field.
4
+
5
+
6
+ == How to use
7
+
8
+ Simply as hell :) First, add integer column called 'flags' (default) or whatever you like.
9
+
10
+ class AddFlagsToUserMigration < ActiveRecord::Migration
11
+ def self.run
12
+ add_column :users, :flags, :integer
13
+ end
14
+ end
15
+
16
+ Then add one line to your model so it should look like this:
17
+
18
+ class User < ActiveRecord::Base
19
+ binary_attributes [:a, :b, :c]
20
+ end
21
+
22
+
23
+ == Custom 'flags' field
24
+
25
+ You can divide all flags into more integer columns, or use non default column name.
26
+
27
+ class AnotherMigration < ActiveRecord::Migration
28
+ def self.run
29
+ add_column :phones, :features, :integer
30
+ add_column :phones, :minor_features, :integer
31
+ end
32
+ end
33
+
34
+ class Phone < ActiveRecord::Base
35
+ binary_attributes [:camera, :wlan, :touchscreen], :features
36
+ binary_attributes [:sd_card_slot, :qwerty_keyboard], :minor_features
37
+ end
38
+
39
+ And try:
40
+
41
+ p = Phone.new
42
+ p.camera = true
43
+ p.qwerty_keyboard = true
44
+ p.save
45
+
46
+ p.features => 1
47
+ p.minor_features => 2
48
+
49
+
50
+ == Custom masks
51
+
52
+ You can specify custom masks if you want to:
53
+
54
+ class Building < ActiveRecord::Base
55
+ flag_attributes(
56
+ "overdriven" => 0b00000001,
57
+ "with_points" => 0b00000010
58
+ )
59
+ end
60
+
61
+
62
+ == Check also
63
+
64
+ There is a more powerful tool here https://github.com/pboling/flag_shih_tzu
65
+
66
+ == Author
67
+
68
+ Core author - Artūras Šlajus (https://github.com/arturaz/ar_binary_flag_attributes/blob/master/init.rb).
69
+ I just added spec, and made a gem :]
70
+
4
71
 
5
72
  == Copyright
6
73
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.0
1
+ 0.0.1
@@ -54,7 +54,8 @@ class ActiveRecord::Base
54
54
 
55
55
  # Set bit value.
56
56
  define_method(set_method) do |value|
57
- if value
57
+ # rails fix
58
+ if value and not value.to_s == '0'
58
59
  # Set bit in flags. This is done using or operation:
59
60
  #
60
61
  # 0b010101 | 0b010101 |
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ar_binary_flag_attributes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-09-19 00:00:00.000000000Z
13
+ date: 2012-09-22 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
17
- requirement: &16272920 !ruby/object:Gem::Requirement
17
+ requirement: &27014200 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *16272920
25
+ version_requirements: *27014200
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rspec
28
- requirement: &16272300 !ruby/object:Gem::Requirement
28
+ requirement: &27013700 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 2.3.0
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *16272300
36
+ version_requirements: *27013700
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: bundler
39
- requirement: &16271700 !ruby/object:Gem::Requirement
39
+ requirement: &27013220 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 1.0.0
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *16271700
47
+ version_requirements: *27013220
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: jeweler
50
- requirement: &16271060 !ruby/object:Gem::Requirement
50
+ requirement: &27012700 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 1.6.4
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *16271060
58
+ version_requirements: *27012700
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: sqlite3
61
- requirement: &16270400 !ruby/object:Gem::Requirement
61
+ requirement: &27012120 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,7 +66,7 @@ dependencies:
66
66
  version: '0'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *16270400
69
+ version_requirements: *27012120
70
70
  description: Add binary flag attributes to AR model using one DB field.
71
71
  email: bobikx@poczta.fm
72
72
  executables: []
@@ -97,7 +97,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
97
97
  version: '0'
98
98
  segments:
99
99
  - 0
100
- hash: 3500626027470588502
100
+ hash: -3296919735079165990
101
101
  required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  none: false
103
103
  requirements: