acts_as_select 0.0.3 → 0.1.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e114efe5884981553cae5f2216196f593c83ebfb
4
+ data.tar.gz: 4614fd67e72e492b3e3bec4427a82cdfebd02fe7
5
+ SHA512:
6
+ metadata.gz: 6c5688553ed5ce7bdee580b0246ebc0e304f022029663497519cf728208bc2c06e3963084beec32bc2af7f33868cfb2de49c4a43cd55bad6b735eb0c78c37fcc
7
+ data.tar.gz: c5c5a99e8a1a59a2241eee8d3f810473a8dbee979f6c9e3ff899a69bbc546422b6a5c85a6087b3b7cf3f12a6ee09e8be8c86eaec747f937eae2f7a82cea6d565
data/README.md CHANGED
@@ -1,7 +1,14 @@
1
1
  # ActsAsSelect
2
2
 
3
- acts_as_select creates a select style for each column in the database (except the primary key) and returns a 2d array
4
- in a form suitable for use in a selection drop down (hence the name)
3
+ Acts_as_select allows you to automatically use the columns from an activerecord reference table with a
4
+ descriptive name and primary key ids
5
+
6
+ It generates <column_name>_select methods for each permitted column, which maps that column and its primary
7
+ key to a 2d array suitable for use in an option_select or as a container for options_for_select.
8
+
9
+ Additionally, it can generate a list of items using <column_name>_list methods.
10
+
11
+ All of these options can be used to terminate scopes or other database methods.
5
12
 
6
13
  ## Installation
7
14
 
@@ -18,18 +25,62 @@ Or install it yourself as:
18
25
  $ gem install acts_as_select
19
26
 
20
27
  ## Usage
28
+ Include acts_as_select in your model file.
29
+
30
+ class Person < ActiveRecord::Base
31
+ acts_as_select
32
+ end
33
+
34
+ This makes all columns database accessible. You can return selectable options by calling <column_name>_select, or
35
+ obtain a list of the contents of a column by calling <column_name>_list
36
+
37
+ ### Options
38
+ acts_as_select takes two options to allow for finer grained control over which methods are created:
39
+
40
+ :include => [column_list]
41
+
42
+ This specifies which columns have _select and _list methods created for them. All other columns are excluded
43
+ Note: if you include a column name that doesn't exist, it will raise a NoMethodError exception when you try to use it.
44
+
45
+ :exclude => [column_list]
46
+
47
+ This specifies which columns are excluded from having the _select and _list methods created.
48
+
49
+ :include => [column_list_1], :exclude => [column_list_2]
50
+
51
+ When both options are supplied, the exclusion happens after the inclusion. That is, if there are overlapping column
52
+ names in both lists, these columns are excluded, regardless of the order of the options.
53
+
54
+ ### Example
55
+
56
+ With this database table
57
+
58
+ | id | name | email |
59
+ |----|------|-----------------|
60
+ | 1 | Bob | bob@example.com |
61
+ | 2 | Jen | jen@example.com |
62
+
63
+ And this model
64
+
65
+ class Person < ActiveRecord::Base
66
+ acts_as_select :include=>['name', 'email'], :exclude=>['id']
67
+ end
68
+
69
+ This would create two select methods, `name_select` and `email_select`,
70
+ and three list methods `name_list` and `email_list`
71
+
72
+ Person.name_select
73
+ #=> [["Bob", 1], ["Jen", 2]]
74
+ Person.email_select
75
+ #=> [["bob@example.com", 1], ["jen@example.com", 2]]
21
76
 
22
- Include acts_as_select in your model file. This makes all columns accessible by calling select_<column_name>
77
+ This is the right format for use in a select tag and friends
23
78
 
24
- Example:
25
- class Dummy < ActiveRecord::Base
26
- acts_as_select
27
- end
79
+ select :order, :customer, Person.name_select
28
80
 
29
- If dummy had a name and description defined in the database, this would create
30
- the methods: select_description, select_name
81
+ You can combine it with scopes
31
82
 
32
- These can then be used anywhere you need a select.
83
+ Person.where(...).name_select
33
84
 
34
85
  ## Contributing
35
86
 
data/Rakefile CHANGED
@@ -1 +1,12 @@
1
- require "bundler/gem_tasks"
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+
4
+ desc 'Default: run all tests.'
5
+ task :default=>:test
6
+
7
+ desc 'Test acts_as_select plugin'
8
+ Rake::TestTask.new(:test) do |t|
9
+ t.libs << 'lib'
10
+ t.pattern = 'test/*_test.rb'
11
+ t.verbose = true
12
+ end
@@ -1,14 +1,15 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
+ require File.dirname(__FILE__) + '/lib/active_record/acts/select'
4
+
3
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'acts_as_select/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
8
  spec.name = 'acts_as_select'
8
- spec.version = ActsAsSelect::VERSION
9
+ spec.version = ActiveRecord::Acts::Select::VERSION
9
10
  spec.authors = ['Paul McKibbin']
10
11
  spec.email = ['pmckibbin@gmail.com']
11
- spec.description = %q{Creation of automatic selection suitable for drop downs from all column fields in an ActiveRecord table}
12
+ spec.description = %q{Creation of automatic selection suitable for drop downs from column fields in an ActiveRecord table}
12
13
  spec.summary = %q{Automated selection for Activerecord Tables}
13
14
  spec.homepage = 'http://blackrat.org'
14
15
  spec.license = 'MIT'
@@ -20,4 +21,7 @@ Gem::Specification.new do |spec|
20
21
 
21
22
  spec.add_development_dependency "bundler", "~> 1.3"
22
23
  spec.add_development_dependency "rake"
24
+ spec.add_development_dependency 'minitest'
25
+ spec.add_development_dependency 'test-unit'
26
+ spec.add_development_dependency 'activerecord'
23
27
  end
data/init.rb ADDED
@@ -0,0 +1,2 @@
1
+ require File.dirname(__FILE__) + '/lib/active_record/acts/select.rb'
2
+ ActiveRecord::Base.send :include, ActiveRecord::Acts::Select
@@ -0,0 +1,57 @@
1
+ module ActiveRecord
2
+ module Acts
3
+ module Select
4
+ VERSION="0.1.0"
5
+ class << self
6
+ def included(base)
7
+ base.instance_eval do
8
+ extend ClassMethods
9
+ end
10
+ end
11
+ end
12
+
13
+ #Acts_as_select allows you to automatically use the columns from an activerecord reference table with a
14
+ #descriptive name and primary key ids
15
+ #It generates XXXX_select method for each permitted column, which maps that column and its primary key
16
+ #to an array suitable for use in an option_select or as a container for options_for_select.
17
+
18
+ module ClassMethods
19
+ private
20
+ def default_opts
21
+ {
22
+ :include=>column_names,
23
+ :exclude=>[]
24
+ }
25
+ end
26
+
27
+ def allowed_columns(*opts)
28
+ opts=!opts.empty? && opts.first.is_a?(Hash) ? default_opts.merge(opts.first) : default_opts
29
+ opts[:include]=[opts[:include]] if opts[:include].is_a?(String)
30
+ opts[:exclude]=[opts[:exclude]] if opts[:exclude].is_a?(String)
31
+ column_names & (opts[:include]-opts[:exclude])
32
+ end
33
+
34
+ public
35
+ def acts_as_select(*opts)
36
+ allowed_columns(*opts).each do |field|
37
+ (class << self;self;end).class_eval do
38
+ define_method "#{field}_select" do
39
+ if respond_to?(:scoped)
40
+ scoped(:select=>["#{field}, #{primary_key}"])
41
+ else
42
+ select(field,primary_key)
43
+ end.map{|x| [x.send(field),x.send(primary_key)]}
44
+ end
45
+ define_method "#{field}_list" do
46
+ (respond_to?(:scoped) ? scoped(:select=>[field]) : select(field)).map{|x| x.send(field)}
47
+ end
48
+ define_method "#{field}_objects" do
49
+ respond_to?(:scoped) ? scoped(:select=>[field]) : select(field)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,186 @@
1
+ require 'rubygems'
2
+ if RUBY_VERSION >= '1.9'
3
+ require 'minitest/autorun'
4
+ require 'active_record'
5
+ else
6
+ require 'test/unit'
7
+ require 'activerecord'
8
+ require 'sqlite3'
9
+ end
10
+ $:.unshift File.dirname(__FILE__) + '/../lib'
11
+ require File.dirname(__FILE__) + '/../init'
12
+
13
+ ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
14
+
15
+ def setup_db
16
+ ActiveRecord::Base.logger
17
+ ActiveRecord::Schema.define(:version => 1) do
18
+ create_table :selections do |t|
19
+ t.column :type, :string
20
+ t.column :name, :string
21
+ t.column :description, :string
22
+ t.column :excluded_string, :string
23
+ end
24
+ end
25
+ end
26
+
27
+ def teardown_db
28
+ ActiveRecord::Base.connection.tables.each do |table|
29
+ ActiveRecord::Base.connection.drop_table(table)
30
+ end
31
+ end
32
+
33
+ class Selection < ActiveRecord::Base;
34
+ end
35
+ class SelectAll < Selection;
36
+ end
37
+ class SelectIncludeSingle < Selection;
38
+ end
39
+ class SelectIncludeMulti < Selection;
40
+ end
41
+ class SelectExcludeSingle < Selection;
42
+ end
43
+ class SelectExcludeMulti < Selection;
44
+ end
45
+ class SelectedIncludeExclude < Selection;
46
+ end
47
+
48
+ class SelectTest < (begin MiniTest::Test rescue Test::Unit::TestCase end)
49
+ def setup
50
+ setup_db
51
+ [SelectAll, SelectIncludeSingle, SelectIncludeMulti, SelectExcludeSingle, SelectExcludeMulti, SelectedIncludeExclude].each do |klass|
52
+ klass.create! :name => 'first', :description => 'First field', :excluded_string => 'not allowed'
53
+ klass.create! :name => 'second', :description => 'Second field', :excluded_string => 'not allowed'
54
+ klass.create! :name => 'third', :description => 'Third field', :excluded_string => 'not allowed'
55
+ klass.create! :name => 'forth', :description => 'Forth field', :excluded_string => 'not allowed'
56
+ klass.create! :name => 'fifth', :description => 'Fifth field', :excluded_string => 'not allowed'
57
+ klass.create! :name => 'sixth', :description => 'Sixth field', :excluded_string => 'not allowed'
58
+ end
59
+ end
60
+
61
+ def teardown
62
+ teardown_db
63
+ end
64
+
65
+ def selection_ids
66
+ [
67
+ [1, 1],
68
+ [2, 2],
69
+ [3, 3],
70
+ [4, 4],
71
+ [5, 5],
72
+ [6, 6]
73
+ ]
74
+ end
75
+
76
+ def selection_names
77
+ [
78
+ ['first', 1],
79
+ ['second', 2],
80
+ ['third', 3],
81
+ ['forth', 4],
82
+ ['fifth', 5],
83
+ ['sixth', 6]
84
+ ]
85
+ end
86
+
87
+ def selection_descriptions
88
+ [
89
+ ['First field', 1],
90
+ ['Second field', 2],
91
+ ['Third field', 3],
92
+ ['Forth field', 4],
93
+ ['Fifth field', 5],
94
+ ['Sixth field', 6]
95
+ ]
96
+ end
97
+
98
+ def selection_excluded_strings
99
+ [
100
+ ['not allowed', 1],
101
+ ['not allowed', 2],
102
+ ['not allowed', 3],
103
+ ['not allowed', 4],
104
+ ['not allowed', 5],
105
+ ['not allowed', 6]
106
+ ]
107
+ end
108
+
109
+ def test_all_names_selection
110
+ SelectAll.acts_as_select
111
+ assert_equal(SelectAll.id_select, selection_ids)
112
+ assert_equal(SelectAll.id_list, selection_ids.map(&:first))
113
+ assert_equal(SelectAll.name_select, selection_names)
114
+ assert_equal(SelectAll.name_list, selection_names.map(&:first))
115
+ assert_equal(SelectAll.description_select, selection_descriptions)
116
+ assert_equal(SelectAll.description_list, selection_descriptions.map(&:first))
117
+ assert_equal(SelectAll.excluded_string_select, selection_excluded_strings)
118
+ assert_equal(SelectAll.excluded_string_list, selection_excluded_strings.map(&:first))
119
+ end
120
+
121
+ def test_incorrect_inclusion
122
+ Selection.acts_as_select :include => ['wibble']
123
+ assert_raises(NoMethodError) { Selection.wibble_select }
124
+ end
125
+
126
+ def test_single_field_selection
127
+ SelectIncludeSingle.acts_as_select :include => 'name'
128
+ assert_raises(NoMethodError) { SelectIncludeSingle.id_select }
129
+ assert_raises(NoMethodError) { SelectIncludeSingle.id_list }
130
+ assert_equal(SelectIncludeSingle.name_select, selection_names.map { |x| [x[0], x[1]+6] })
131
+ assert_equal(SelectIncludeSingle.name_list, selection_names.map(&:first))
132
+ assert_raises(NoMethodError) { SelectIncludeSingle.description_select }
133
+ assert_raises(NoMethodError) { SelectIncludeSingle.description_list }
134
+ assert_raises(NoMethodError) { SelectIncludeSingle.excluded_string_select }
135
+ assert_raises(NoMethodError) { SelectIncludeSingle.excluded_string_list }
136
+ end
137
+
138
+ def test_multi_field_selection
139
+ SelectIncludeMulti.acts_as_select :include => %w(name description)
140
+ assert_raises(NoMethodError) { SelectIncludeMulti.id_select }
141
+ assert_raises(NoMethodError) { SelectIncludeMulti.id_list }
142
+ assert_equal(SelectIncludeMulti.name_select, selection_names.map { |x| [x[0], x[1]+12] })
143
+ assert_equal(SelectIncludeMulti.name_list, selection_names.map(&:first))
144
+ assert_equal(SelectIncludeMulti.description_select, selection_descriptions.map { |x| [x[0], x[1]+12] })
145
+ assert_equal(SelectIncludeMulti.description_list, selection_descriptions.map(&:first))
146
+ assert_raises(NoMethodError) { SelectIncludeMulti.excluded_string_select }
147
+ assert_raises(NoMethodError) { SelectIncludeMulti.excluded_string_list }
148
+ end
149
+
150
+ def test_single_field_exclusion
151
+ SelectExcludeSingle.acts_as_select :exclude => 'excluded_string'
152
+ assert_equal(SelectExcludeSingle.id_select, selection_ids.map { |x| [x[0]+18, x[1]+18] })
153
+ assert_equal(SelectExcludeSingle.id_list, selection_ids.map { |x| x[0]+18 })
154
+ assert_equal(SelectExcludeSingle.name_select, selection_names.map { |x| [x[0], x[1]+18] })
155
+ assert_equal(SelectExcludeSingle.name_list, selection_names.map(&:first))
156
+ assert_equal(SelectExcludeSingle.description_select, selection_descriptions.map { |x| [x[0], x[1]+18] })
157
+ assert_equal(SelectExcludeSingle.description_list, selection_descriptions.map(&:first))
158
+ assert_raises(NoMethodError) { SelectExcludeSingle.excluded_string_select }
159
+ assert_raises(NoMethodError) { SelectExcludeSingle.excluded_string_list }
160
+ end
161
+
162
+ def test_multi_field_exclusion
163
+ SelectExcludeMulti.acts_as_select :exclude => %w(description excluded_string)
164
+ assert_equal(SelectExcludeMulti.id_select, selection_ids.map { |x| [x[0]+24, x[1]+24] })
165
+ assert_equal(SelectExcludeMulti.id_list, selection_ids.map { |x| x[0]+24 })
166
+ assert_equal(SelectExcludeMulti.name_select, selection_names.map { |x| [x[0], x[1]+24] })
167
+ assert_equal(SelectExcludeMulti.name_list, selection_names.map(&:first))
168
+ assert_raises(NoMethodError) { SelectExcludeMulti.description_select }
169
+ assert_raises(NoMethodError) { SelectExcludeMulti.description_list }
170
+ assert_raises(NoMethodError) { SelectExcludeMulti.excluded_string_select }
171
+ assert_raises(NoMethodError) { SelectExcludeMulti.excluded_string_list }
172
+ end
173
+
174
+ def test_include_exclude
175
+ SelectedIncludeExclude.acts_as_select :include => %w(name description), :exclude => %w(description excluded_string)
176
+ assert_raises(NoMethodError) { SelectedIncludeExclude.id_select }
177
+ assert_raises(NoMethodError) { SelectedIncludeExclude.id_list }
178
+ assert_equal(SelectedIncludeExclude.name_select, selection_names.map { |x| [x[0], x[1]+30] })
179
+ assert_equal(SelectedIncludeExclude.name_list, selection_names.map(&:first))
180
+ assert_raises(NoMethodError) { SelectedIncludeExclude.description_select }
181
+ assert_raises(NoMethodError) { SelectedIncludeExclude.description_list }
182
+ assert_raises(NoMethodError) { SelectedIncludeExclude.excluded_string_select }
183
+ assert_raises(NoMethodError) { SelectedIncludeExclude.excluded_string_list }
184
+ end
185
+ end
186
+
metadata CHANGED
@@ -1,102 +1,125 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: acts_as_select
3
- version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 3
10
- version: 0.0.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Paul McKibbin
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2014-12-16 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
11
+ date: 2015-02-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
21
14
  name: bundler
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 9
29
- segments:
30
- - 1
31
- - 3
32
- version: "1.3"
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
33
20
  type: :development
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
36
28
  name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
37
35
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
41
38
  - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
47
48
  type: :development
48
- version_requirements: *id002
49
- description: Creation of automatic selection suitable for drop downs from all column fields in an ActiveRecord table
50
- email:
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: test-unit
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activerecord
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Creation of automatic selection suitable for drop downs from column fields
84
+ in an ActiveRecord table
85
+ email:
51
86
  - pmckibbin@gmail.com
52
87
  executables: []
53
-
54
88
  extensions: []
55
-
56
89
  extra_rdoc_files: []
57
-
58
- files:
59
- - .gitignore
90
+ files:
91
+ - ".gitignore"
60
92
  - Gemfile
61
93
  - LICENSE.txt
62
94
  - README.md
63
95
  - Rakefile
64
96
  - acts_as_select.gemspec
65
- - lib/acts_as_select.rb
66
- - lib/acts_as_select/selection.rb
67
- - lib/acts_as_select/version.rb
97
+ - init.rb
98
+ - lib/active_record/acts/select.rb
99
+ - test/select_test.rb
68
100
  homepage: http://blackrat.org
69
- licenses:
101
+ licenses:
70
102
  - MIT
103
+ metadata: {}
71
104
  post_install_message:
72
105
  rdoc_options: []
73
-
74
- require_paths:
106
+ require_paths:
75
107
  - lib
76
- required_ruby_version: !ruby/object:Gem::Requirement
77
- none: false
78
- requirements:
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ requirements:
79
110
  - - ">="
80
- - !ruby/object:Gem::Version
81
- hash: 3
82
- segments:
83
- - 0
84
- version: "0"
85
- required_rubygems_version: !ruby/object:Gem::Requirement
86
- none: false
87
- requirements:
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
114
+ requirements:
88
115
  - - ">="
89
- - !ruby/object:Gem::Version
90
- hash: 3
91
- segments:
92
- - 0
93
- version: "0"
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
94
118
  requirements: []
95
-
96
119
  rubyforge_project:
97
- rubygems_version: 1.8.25
120
+ rubygems_version: 2.2.2
98
121
  signing_key:
99
- specification_version: 3
122
+ specification_version: 4
100
123
  summary: Automated selection for Activerecord Tables
101
- test_files: []
102
-
124
+ test_files:
125
+ - test/select_test.rb
@@ -1,6 +0,0 @@
1
- require 'acts_as_select/version'
2
- require 'acts_as_select/selection'
3
-
4
- class ActiveRecord::Base
5
- extend ActsAsSelect
6
- end
@@ -1,28 +0,0 @@
1
- module ActsAsSelect
2
- def acts_as_select
3
- column_names.each do |field|
4
- class_eval %Q(
5
- if case Rails::VERSION_MAJOR < 3
6
- named_scope :select_#{field}_objects, lambda {{:select => "#{field}, \#{primary_key}"}}
7
- else
8
- scope :select_#{field}_objects, lambda { select("#{field}, \#{primary_key}") }
9
- end
10
-
11
- class << self
12
- def #{field}_select
13
- select_#{field}_objects.map{|x| [x.#{field}, x.send(x.class.primary_key)]}
14
- end
15
-
16
- def #{field}_list
17
- select_#{field}_objects.map(&:#{field})
18
- end
19
-
20
- def #{field}_objects
21
- select_#{field}_objects.map(&:#{field})
22
- end
23
-
24
- end
25
- )
26
- end
27
- end
28
- end
@@ -1,3 +0,0 @@
1
- module ActsAsSelect
2
- VERSION = "0.0.3"
3
- end