acts_as_tableless 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.
- data/README.rdoc +81 -4
- data/lib/acts_as_tableless.rb +136 -21
- data/lib/acts_as_tableless/version.rb +1 -1
- data/test/acts_as_tableless_test.rb +160 -32
- data/test/dummy/app/models/color.rb +8 -0
- data/test/dummy/app/models/letter.rb +9 -0
- data/test/dummy/app/models/number.rb +8 -0
- data/test/dummy/app/models/shape.rb +9 -0
- data/test/dummy/app/models/size.rb +9 -0
- data/test/dummy/app/models/user.rb +9 -0
- data/test/dummy/app/models/user_color.rb +5 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20120626092235_create_users.rb +11 -0
- data/test/dummy/db/migrate/20120626092236_create_user_colors.rb +10 -0
- data/test/dummy/db/schema.rb +31 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +32 -0
- data/test/dummy/log/test.log +8920 -0
- metadata +26 -6
- data/test/dummy/app/models/active_record_modle_with_association.rb +0 -7
- data/test/dummy/app/models/has_many_tableless_object.rb +0 -7
data/README.rdoc
CHANGED
@@ -2,10 +2,87 @@
|
|
2
2
|
|
3
3
|
Create tableless activerecord objects that support associations and validations.
|
4
4
|
|
5
|
-
|
6
|
-
2. Add <tt>acts_as_tableless</tt> to a activerecord model
|
5
|
+
== Install:
|
7
6
|
|
8
|
-
|
7
|
+
1. add <tt>gem 'acts_as_tableless'</tt> to your gemfile
|
8
|
+
2. run <tt>bundle install</tt>
|
9
|
+
3. add <tt>acts_as_tableless</tt> to a activerecord model
|
10
|
+
|
11
|
+
== Usage:
|
12
|
+
|
13
|
+
class User < ActiveRecord::Base
|
14
|
+
has_many :shapes
|
15
|
+
has_many :user_colors
|
16
|
+
has_many :colors, :through => :user_colors
|
17
|
+
has_one :size
|
18
|
+
belongs_to :number
|
19
|
+
attr_accessible :name, :number_id, :letter_id
|
20
|
+
end
|
21
|
+
|
22
|
+
class Color < ActiveRecord::Base
|
23
|
+
acts_as_tableless
|
24
|
+
column :id, :integer
|
25
|
+
column :name, :string
|
26
|
+
attr_accessible :id, :name
|
27
|
+
belongs_to :user_colors
|
28
|
+
end
|
29
|
+
|
30
|
+
class Letter < ActiveRecord::Base
|
31
|
+
acts_as_tableless
|
32
|
+
column :id, :integer
|
33
|
+
column :name, :string
|
34
|
+
column :user_id, :integer
|
35
|
+
attr_accessible :id, :name, :user_id
|
36
|
+
has_and_belongs_to_many :users
|
37
|
+
end
|
38
|
+
|
39
|
+
class Number < ActiveRecord::Base
|
40
|
+
acts_as_tableless
|
41
|
+
column :id, :integer
|
42
|
+
column :name, :string
|
43
|
+
attr_accessible :id, :name
|
44
|
+
has_many :users
|
45
|
+
end
|
46
|
+
|
47
|
+
class Shape < ActiveRecord::Base
|
48
|
+
acts_as_tableless
|
49
|
+
column :id, :integer
|
50
|
+
column :name, :string
|
51
|
+
column :user_id, :integer
|
52
|
+
attr_accessible :id, :name, :user_id
|
53
|
+
belongs_to :user
|
54
|
+
end
|
55
|
+
|
56
|
+
class Size < ActiveRecord::Base
|
57
|
+
acts_as_tableless
|
58
|
+
column :id, :integer
|
59
|
+
column :name, :string
|
60
|
+
column :user_id, :integer
|
61
|
+
attr_accessible :id, :name, :user_id
|
62
|
+
belongs_to :user
|
63
|
+
end
|
64
|
+
|
65
|
+
class UserColor < ActiveRecord::Base
|
66
|
+
belongs_to :user
|
67
|
+
belongs_to :color
|
68
|
+
attr_accessible :user_id, :color_id
|
69
|
+
end
|
70
|
+
|
71
|
+
== Examples:
|
72
|
+
|
73
|
+
@user = User.create(:name => "User")
|
74
|
+
|
75
|
+
@user.shapes.create(:name => "Octagon") #=> #<Shape id: 1, name: "Octagon", user_id: 1>
|
76
|
+
|
77
|
+
@user.colors << Color.create([{:name => "Green"},{:name => "Blue"}]) #=> [#<Color id: 1, name: "Green">, #<Color id: 2, name: "Blue">]
|
78
|
+
|
79
|
+
@user.size.create(:name => "Large") #=> #<Size id: 1, name: "Large", user_id: 1>
|
80
|
+
|
81
|
+
@user.number = Number.create(name: "One") #=> #<Number id: 1, name: "One">
|
82
|
+
|
83
|
+
More stuff in the test file.
|
84
|
+
|
85
|
+
== Notes:
|
9
86
|
|
10
87
|
This gem relies on String#singularize which is known to have some problems. To correct errors such as:
|
11
88
|
|
@@ -18,4 +95,4 @@ please add something similar to:
|
|
18
95
|
inflect.singular("status", "status")
|
19
96
|
end
|
20
97
|
|
21
|
-
to your environment.rb file before the <tt>Application.initialize!</tt> line
|
98
|
+
to your environment.rb file before the <tt>Application.initialize!</tt> line
|
data/lib/acts_as_tableless.rb
CHANGED
@@ -37,8 +37,25 @@ module ActsAsTableless
|
|
37
37
|
def all
|
38
38
|
ActsAsTableless.class_variable_get(:"@@#{self.name.underscore}")
|
39
39
|
end
|
40
|
+
|
41
|
+
def find(id)
|
42
|
+
ActsAsTableless.class_variable_get(:"@@#{self.name.underscore}").select{|record| record.id == id}.first
|
43
|
+
end
|
44
|
+
|
45
|
+
def delete(ids)
|
46
|
+
ids = [ids] unless ids.is_a?(Array)
|
47
|
+
# this coule be improved
|
48
|
+
ids.each do |id|
|
49
|
+
find(id).delete
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def exists?(id)
|
54
|
+
find(id).nil? ? false : true
|
55
|
+
end
|
40
56
|
end
|
41
57
|
ActsAsTableless.class_variable_set(:"@@#{self.name.underscore}", [])
|
58
|
+
ActsAsTableless.class_variable_set(:"@@#{self.name.underscore}_increment", 1)
|
42
59
|
include InstanceMethods
|
43
60
|
end
|
44
61
|
end
|
@@ -47,18 +64,31 @@ module ActsAsTableless
|
|
47
64
|
def persisted?
|
48
65
|
false
|
49
66
|
end
|
50
|
-
|
67
|
+
|
51
68
|
def readonly?
|
52
|
-
|
69
|
+
true
|
53
70
|
end
|
54
71
|
|
55
72
|
def save(validate = true)
|
73
|
+
unless self.id
|
74
|
+
id = ActsAsTableless.class_variable_get(:"@@#{self.class.name.underscore}_increment")
|
75
|
+
id += 1 while self.class.send(:find, id)
|
76
|
+
self.id = ActsAsTableless.class_variable_set(:"@@#{self.class.name.underscore}_increment", id)
|
77
|
+
end
|
78
|
+
raise "Duplicate ID" if self.class.send(:find, id) # these are read only
|
56
79
|
if validate ? valid? : true
|
57
|
-
ActsAsTableless.
|
80
|
+
ActsAsTableless.class_variable_get(:"@@#{self.class.name.underscore}").push(self)
|
81
|
+
return self
|
58
82
|
end
|
59
83
|
end
|
60
84
|
|
85
|
+
def delete
|
86
|
+
ActsAsTableless.class_variable_get(:"@@#{self.class.name.underscore}").delete(self)
|
87
|
+
return true
|
88
|
+
end
|
89
|
+
|
61
90
|
alias :save! :save
|
91
|
+
alias :delete! :delete
|
62
92
|
end
|
63
93
|
end
|
64
94
|
|
@@ -84,7 +114,8 @@ module ActiveRecord
|
|
84
114
|
[]
|
85
115
|
else
|
86
116
|
through_objects = [through_objects] unless through_objects.is_a?(Array)
|
87
|
-
|
117
|
+
through_association_id = [:has_one, :belongs_to].include?( options[:through].to_s.singularize.camelize.constantize.reflect_on_all_associations.select{ |associations| associations.name.to_s == class_variable_name }.first.macro ) ? association_id.to_s.singularize.to_sym : association_id
|
118
|
+
through_objects.collect{|object| object.send(through_association_id) }.flatten
|
88
119
|
end
|
89
120
|
|
90
121
|
records.instance_variable_set(:@parent, self)
|
@@ -96,7 +127,7 @@ module ActiveRecord
|
|
96
127
|
when :has_many
|
97
128
|
associated_records.each do |associated_record|
|
98
129
|
raise ActiveRecord::AssociationTypeMismatch, "#{@association_class.name} expected, got #{associated_record.inspect}" unless @association_class.name == associated_record.class.name
|
99
|
-
@
|
130
|
+
@options[:through].to_s.singularize.camelize.constantize.create("#{@parent.class.name.underscore}_id".to_sym => @parent.id, "#{@association_class.name.underscore}_id".to_sym => associated_record.id)
|
100
131
|
end
|
101
132
|
when :has_one
|
102
133
|
# not yet implemented
|
@@ -108,23 +139,94 @@ module ActiveRecord
|
|
108
139
|
# not yet implemented
|
109
140
|
[]
|
110
141
|
end
|
111
|
-
|
142
|
+
self
|
112
143
|
end
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
144
|
+
def records.create(new_records_attributes = nil, options = {})
|
145
|
+
new_records = new_records_attributes.is_a?(Array) ? [] : nil
|
146
|
+
new_records_attributes = [new_records_attributes] unless new_records_attributes.is_a?(Array)
|
147
|
+
case @parent.class.reflect_on_all_associations.select{|association| association.name == @options[:through]}.first.macro
|
148
|
+
when :has_many
|
149
|
+
new_records_attributes = [new_records_attributes] unless new_records_attributes.is_a?(Array)
|
150
|
+
new_records = []
|
151
|
+
new_records_attributes.each do |attributes|
|
152
|
+
new_record = @association_class.create(attributes)
|
153
|
+
@options[:through].to_s.singularize.camelize.constantize.create("#{@parent.class.name.underscore}_id".to_sym => @parent.id, "#{@association_class.name.underscore}_id".to_sym => new_record.id)
|
154
|
+
if new_records.is_a?(Array)
|
155
|
+
new_records << new_record
|
156
|
+
else
|
157
|
+
return new_record
|
158
|
+
end
|
159
|
+
end
|
160
|
+
when :has_one
|
161
|
+
# not yet implemented
|
162
|
+
[]
|
163
|
+
when :belongs_to
|
164
|
+
# not yet implemented
|
165
|
+
[]
|
166
|
+
when :has_and_belongs_to_many
|
167
|
+
# not yet implemented
|
168
|
+
[]
|
169
|
+
end
|
170
|
+
return new_records
|
171
|
+
end
|
172
|
+
|
123
173
|
return records
|
124
174
|
end
|
175
|
+
|
176
|
+
define_method("#{association_id.to_s}=") do |associated_records|
|
177
|
+
new_associated_records = associated_records.is_a?(Array) ? [] : nil
|
178
|
+
associated_records = [associated_records] unless associated_records.is_a?(Array)
|
179
|
+
through_class = options[:through].to_s.singularize.camelize.constantize
|
180
|
+
through_class.all.select{|r|r.send("#{self.class.name.underscore}_id") == self.id}.each{|r|r.delete} # this line could be made more efficient
|
181
|
+
case self.class.reflect_on_all_associations.select{|association| association.name == options[:through]}.first.macro
|
182
|
+
when :has_many
|
183
|
+
associated_records.each do |associated_record|
|
184
|
+
new_associated_record = through_class.new
|
185
|
+
new_associated_record.send("#{self.class.name.underscore}_id=", self.id)
|
186
|
+
new_associated_record.send("#{association_class.name.underscore}_id=", associated_record.id)
|
187
|
+
new_associated_record.save
|
188
|
+
if new_associated_records.is_a?(Array)
|
189
|
+
new_associated_records << new_associated_record
|
190
|
+
else
|
191
|
+
return new_associated_record
|
192
|
+
end
|
193
|
+
end
|
194
|
+
when :has_one
|
195
|
+
# not yet implemented
|
196
|
+
[]
|
197
|
+
when :belongs_to
|
198
|
+
# not yet implemented
|
199
|
+
[]
|
200
|
+
when :has_and_belongs_to_many
|
201
|
+
# not yet implemented
|
202
|
+
[]
|
203
|
+
end
|
204
|
+
return new_associated_records
|
205
|
+
end
|
206
|
+
|
125
207
|
else
|
126
208
|
define_method(association_id.to_s) do
|
127
|
-
association_class.all.select{|record| record.send("#{self.class.name.underscore}_id") == self.id}
|
209
|
+
records = association_class.all.select{|record| record.send("#{self.class.name.underscore}_id") == self.id}
|
210
|
+
|
211
|
+
records.instance_variable_set(:@parent, self)
|
212
|
+
records.instance_variable_set(:@association_class, association_class)
|
213
|
+
def records.create(new_records_attributes = nil)
|
214
|
+
new_records = new_records_attributes.is_a?(Array) ? [] : nil
|
215
|
+
new_records_attributes = [new_records_attributes] unless new_records_attributes.is_a?(Array)
|
216
|
+
new_records_attributes.each do |attributes|
|
217
|
+
new_record = @association_class.new(attributes)
|
218
|
+
new_record.send("#{@parent.class.name.underscore}_id=", @parent.id)
|
219
|
+
new_record.save
|
220
|
+
if new_records.is_a?(Array)
|
221
|
+
new_records << new_record
|
222
|
+
else
|
223
|
+
return new_record
|
224
|
+
end
|
225
|
+
end
|
226
|
+
return new_records
|
227
|
+
end
|
228
|
+
|
229
|
+
return records
|
128
230
|
end
|
129
231
|
end
|
130
232
|
end
|
@@ -143,7 +245,18 @@ module ActiveRecord
|
|
143
245
|
end
|
144
246
|
else
|
145
247
|
define_method(association_id.to_s) do
|
146
|
-
association_class.all.select{|
|
248
|
+
record = association_class.all.select{|r|r.send("#{self.class.name.underscore}_id") == self.id}.first
|
249
|
+
record.instance_variable_set(:@parent, self)
|
250
|
+
record.instance_variable_set(:@association_class, association_class)
|
251
|
+
def record.create(attributes)
|
252
|
+
old_record = @parent.send(@association_class.name.underscore)
|
253
|
+
new_record = @association_class.new(attributes)
|
254
|
+
new_record.send("#{@parent.class.name.underscore}_id=", @parent.id)
|
255
|
+
new_record.save
|
256
|
+
old_record.delete unless old_record.nil?
|
257
|
+
return new_record
|
258
|
+
end
|
259
|
+
return record
|
147
260
|
end
|
148
261
|
end
|
149
262
|
end
|
@@ -155,7 +268,7 @@ module ActiveRecord
|
|
155
268
|
if class_variable_name.camelize.constantize.send(:included_modules).include?(ActsAsTableless) # || ActsAsTableless.class_variables.include?(:"@@#{class_variable_name}")
|
156
269
|
association_class = class_variable_name.camelize.constantize rescue nil
|
157
270
|
define_method(association_id.to_s) do
|
158
|
-
association_class.
|
271
|
+
association_class.all.select{|record| record.id == self.send("#{association_class.name.underscore}_id")}.first
|
159
272
|
end
|
160
273
|
end
|
161
274
|
end
|
@@ -165,8 +278,10 @@ module ActiveRecord
|
|
165
278
|
class_variable_name = association_id.to_s.singularize
|
166
279
|
if class_variable_name.camelize.constantize.send(:included_modules).include?(ActsAsTableless) # || ActsAsTableless.class_variables.include?(:"@@#{class_variable_name}")
|
167
280
|
association_class = class_variable_name.camelize.constantize rescue nil
|
168
|
-
# not yet implemented
|
169
|
-
|
281
|
+
# not yet implemented, and may never be; use has_many
|
282
|
+
define_method(association_id.to_s) do
|
283
|
+
[]
|
284
|
+
end
|
170
285
|
end
|
171
286
|
end
|
172
287
|
end
|
@@ -2,11 +2,14 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
class ActsAsTablelessTest < ActiveSupport::TestCase
|
4
4
|
def setup
|
5
|
-
|
5
|
+
build_users
|
6
|
+
|
7
|
+
@user = @user_one
|
6
8
|
end
|
7
9
|
|
8
|
-
test "
|
9
|
-
|
10
|
+
test "active_record_methods" do
|
11
|
+
build_all
|
12
|
+
tabless_models = [Color, Letter, Number, Shape, Size]
|
10
13
|
|
11
14
|
tabless_models.each do |tabless_model|
|
12
15
|
assert tabless_model.table_name
|
@@ -19,47 +22,172 @@ class ActsAsTablelessTest < ActiveSupport::TestCase
|
|
19
22
|
|
20
23
|
tableless_object = tabless_model.all.select{|object|object.id == 1}.first
|
21
24
|
assert !tableless_object.persisted?
|
22
|
-
assert
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
assert tableless_object.readonly?
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
test "has_many" do
|
30
|
+
# has_many :shapes
|
31
|
+
build_shapes
|
32
|
+
assert @user.present?
|
33
|
+
assert @user.shapes.present?
|
34
|
+
assert_equal 2, @user.shapes.count
|
35
|
+
assert ["Circle", "Square"].sort.eql?(@user.shapes.collect(&:name).sort)
|
36
|
+
|
37
|
+
@user.shapes.create(:name => "Octagon")
|
38
|
+
assert_equal 3, @user.shapes.count
|
39
|
+
assert ["Circle", "Octagon", "Square"].sort.eql?(@user.shapes.collect(&:name).sort)
|
40
|
+
end
|
41
|
+
|
42
|
+
test "has_many_through" do
|
43
|
+
# has_many :user_colors
|
44
|
+
# has_many :colors, :through => :user_colors
|
45
|
+
build_colors
|
46
|
+
build_user_colors
|
47
|
+
assert @user
|
48
|
+
assert @user.user_colors
|
49
|
+
assert @user.colors
|
50
|
+
assert_equal 3, @user.colors.count
|
51
|
+
assert ["Blue", "Purple", "Red"].sort.eql?(@user.colors.collect(&:name).sort)
|
52
|
+
|
53
|
+
@user.colors << Color.all.select{|c|c.name == "Green"}
|
54
|
+
assert ["Blue", "Green", "Purple", "Red"].sort.eql?(@user.colors.collect(&:name).sort)
|
55
|
+
|
56
|
+
@user.colors.create(:name => "Orange")
|
57
|
+
assert ["Blue", "Green", "Orange", "Purple", "Red"].sort.eql?(@user.colors.collect(&:name).sort)
|
58
|
+
|
59
|
+
@user.colors = Color.all.select{|c| ["Yellow", "Blue"].include?(c.name)}
|
60
|
+
assert ["Blue", "Yellow"].sort.eql?(@user.colors.collect(&:name).sort)
|
61
|
+
end
|
62
|
+
|
63
|
+
test "has_one_association" do
|
64
|
+
# has_one :size
|
65
|
+
build_sizes
|
66
|
+
assert @user
|
67
|
+
assert @user.size
|
68
|
+
assert_equal "Small", @user.size.name
|
69
|
+
assert Size.all.collect(&:name).include?("Small")
|
70
|
+
assert !Size.all.collect(&:name).include?("X-Large")
|
71
|
+
|
72
|
+
@user.size.create(:name => "X-Large")
|
73
|
+
assert_equal "X-Large", @user.size.name
|
74
|
+
assert Size.all.collect(&:name).include?("X-Large")
|
75
|
+
assert !Size.all.collect(&:name).include?("Small")
|
76
|
+
end
|
77
|
+
|
78
|
+
test "belongs_to_association" do
|
79
|
+
# belongs_to :number
|
80
|
+
build_numbers
|
81
|
+
assert @user
|
82
|
+
assert @user.number
|
83
|
+
assert_equal "One", @user.number.name
|
84
|
+
|
85
|
+
@user.number = @@two
|
86
|
+
@user.save
|
87
|
+
assert_equal "Two", @user.number.name
|
88
|
+
end
|
89
|
+
|
90
|
+
# this is not yet implemented, and may never be; use has_many
|
91
|
+
test "has_and_belongs_to_many_association" do
|
92
|
+
# has_and_belongs_to_many :letters
|
93
|
+
build_letters
|
94
|
+
assert @user
|
95
|
+
assert @user.letters
|
96
|
+
# assert_equal 2, @user.letters.count
|
97
|
+
# assert ["A", "O"].sort.eql? @user.letters.collect(&:name).sort
|
98
|
+
|
99
|
+
# @user.letters.create(:name => "Z")
|
100
|
+
# assert_equal 3, @user.letters.count
|
101
|
+
# assert ["A", "O", "Z"].sort.eql?(@user.letters.collect(&:name).sort)
|
102
|
+
end
|
103
|
+
|
104
|
+
def build_all
|
105
|
+
build_colors
|
106
|
+
build_letters
|
107
|
+
build_numbers
|
108
|
+
build_shapes
|
109
|
+
build_sizes
|
110
|
+
build_users
|
111
|
+
build_user_colors
|
112
|
+
end
|
113
|
+
|
114
|
+
def build_colors
|
115
|
+
if Color.all.none?
|
116
|
+
@@red = Color.create(name: "Red")
|
117
|
+
@@yellow = Color.create(name: "Yellow")
|
118
|
+
@@blue = Color.create(name: "Blue")
|
119
|
+
@@green = Color.create(name: "Green")
|
120
|
+
@@purple = Color.create(name: "Purple")
|
27
121
|
end
|
28
122
|
end
|
29
123
|
|
30
|
-
|
31
|
-
|
124
|
+
def build_letters
|
125
|
+
if Letter.all.none?
|
126
|
+
build_users
|
127
|
+
@@a = Letter.create(name: "A", user_id: @user_one.id)
|
128
|
+
@@e = Letter.create(name: "E", user_id: @user_two.id)
|
129
|
+
@@i = Letter.create(name: "I", user_id: @user_three.id)
|
130
|
+
@@o = Letter.create(name: "O", user_id: @user_one.id)
|
131
|
+
@@u = Letter.create(name: "U", user_id: @user_two.id)
|
132
|
+
@@y = Letter.create(name: "Y", user_id: @user_three.id)
|
133
|
+
end
|
32
134
|
end
|
33
135
|
|
34
|
-
|
35
|
-
|
36
|
-
|
136
|
+
def build_numbers
|
137
|
+
if Number.all.none?
|
138
|
+
@@one = Number.create(name: "One")
|
139
|
+
@@two = Number.create(name: "Two")
|
140
|
+
@@three = Number.create(name: "Three")
|
141
|
+
@@four = Number.create(name: "Four")
|
142
|
+
@@five = Number.create(name: "Five")
|
143
|
+
@@six = Number.create(name: "Six")
|
144
|
+
@@seven = Number.create(name: "Seven")
|
145
|
+
@@eight = Number.create(name: "Eight")
|
146
|
+
@@nine = Number.create(name: "Nine")
|
147
|
+
@@zero = Number.create(name: "Zero")
|
148
|
+
end
|
37
149
|
end
|
38
150
|
|
39
|
-
|
40
|
-
|
41
|
-
|
151
|
+
def build_shapes
|
152
|
+
if Shape.all.none?
|
153
|
+
build_users
|
154
|
+
@@square = Shape.create(name: "Square", user_id: @user_one.id)
|
155
|
+
@@rectangle = Shape.create(name: "Rectangle", user_id: @user_two.id)
|
156
|
+
@@triangle = Shape.create(name: "Triangle", user_id: @user_three.id)
|
157
|
+
@@circle = Shape.create(name: "Circle", user_id: @user_one.id)
|
158
|
+
@@hexagon = Shape.create(name: "Hexagon", user_id: @user_two.id)
|
159
|
+
end
|
42
160
|
end
|
43
161
|
|
44
|
-
|
45
|
-
|
46
|
-
|
162
|
+
def build_sizes
|
163
|
+
if Size.all.none?
|
164
|
+
build_users
|
165
|
+
@@small = Size.create(name: "Small", user_id: @user_one.id)
|
166
|
+
@@medium = Size.create(name: "Meduim", user_id: @user_two.id)
|
167
|
+
@@large = Size.create(name: "Large", user_id: @user_three.id)
|
168
|
+
end
|
47
169
|
end
|
48
170
|
|
49
|
-
|
50
|
-
|
51
|
-
|
171
|
+
def build_users
|
172
|
+
if User.all.none?
|
173
|
+
build_numbers
|
174
|
+
@user_one = User.create(name: "User One", number_id: @@one.id)
|
175
|
+
@user_two = User.create(name: "User Two", number_id: @@two.id)
|
176
|
+
@user_three = User.create(name: "User Three", number_id: @@three.id)
|
177
|
+
end
|
52
178
|
end
|
53
179
|
|
54
|
-
def
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
180
|
+
def build_user_colors
|
181
|
+
if UserColor.all.none?
|
182
|
+
build_users
|
183
|
+
build_colors
|
184
|
+
UserColor.create([
|
185
|
+
{user_id: @user_one.id, color_id: @@red.id},
|
186
|
+
{user_id: @user_two.id, color_id: @@yellow.id},
|
187
|
+
{user_id: @user_one.id, color_id: @@blue.id},
|
188
|
+
{user_id: @user_two.id, color_id: @@green.id},
|
189
|
+
{user_id: @user_one.id, color_id: @@purple.id},
|
190
|
+
])
|
191
|
+
end
|
64
192
|
end
|
65
193
|
end
|