Class: SeedFu::Seeder
- Inherits:
-
Object
show all
- Defined in:
- lib/seed-fu.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(model_class) ⇒ Seeder
Returns a new instance of Seeder.
13
14
15
16
17
|
# File 'lib/seed-fu.rb', line 13
def initialize(model_class)
@model_class = model_class
@constraints = [:id]
@data = {}
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args) ⇒ Object
43
44
45
46
47
48
49
|
# File 'lib/seed-fu.rb', line 43
def method_missing(method_name, *args) if (match = method_name.to_s.match(/(.*)=$/)) && args.size == 1
set_attribute(match[1], args.first)
else
super
end
end
|
Class Method Details
.plant(model_class, *constraints) {|seed| ... } ⇒ Object
3
4
5
6
7
8
9
10
11
|
# File 'lib/seed-fu.rb', line 3
def self.plant(model_class, *constraints, &block)
constraints = [:id] if constraints.empty?
seed = Seeder.new(model_class)
insert_only = constraints.last.is_a? TrueClass
constraints.delete_at(*constraints.length-1) if (constraints.last.is_a? TrueClass or constraints.last.is_a? FalseClass)
seed.set_constraints(*constraints)
yield seed
seed.plant!(insert_only)
end
|
Instance Method Details
#plant!(insert_only = false) ⇒ Object
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/seed-fu.rb', line 32
def plant! insert_only=false
record = get
return if !record.new_record? and insert_only
@data.each do |k, v|
record.send("#{k}=", v)
end
record.save!
puts " - #{@model_class} #{condition_hash.inspect}"
record
end
|
#set_attribute(name, value) ⇒ Object
28
29
30
|
# File 'lib/seed-fu.rb', line 28
def set_attribute(name, value)
@data[name.to_sym] = value
end
|
#set_constraints(*constraints) ⇒ Object
19
20
21
22
23
24
25
26
|
# File 'lib/seed-fu.rb', line 19
def set_constraints(*constraints)
raise "You must set at least one constraint." if constraints.empty?
@constraints = []
constraints.each do |constraint|
raise "Your constraint `#{constraint}` is not a column in #{@model_class}. Valid columns are `#{@model_class.column_names.join("`, `")}`." unless @model_class.column_names.include?(constraint.to_s)
@constraints << constraint.to_sym
end
end
|