acts_as_select 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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