Class: SeedFu::Seeder
- Inherits:
-
Object
- Object
- SeedFu::Seeder
- Defined in:
- lib/seed-fu.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(model_class) ⇒ Seeder
constructor
A new instance of Seeder.
-
#method_missing(method_name, *args) ⇒ Object
:nodoc:.
- #plant!(insert_only = false) ⇒ Object
- #set_constraints(*constraints) ⇒ Object
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
:nodoc:
39 40 41 42 43 44 45 46 |
# File 'lib/seed-fu.rb', line 39 def method_missing(method_name, *args) #:nodoc: if args.size == 1 and (match = method_name.to_s.match(/(.*)=$/)) self.class.class_eval "def #{method_name} arg; @data[:#{match[1]}] = arg; end" send(method_name, args[0]) 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
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/seed-fu.rb', line 28 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 raise "Error Saving: #{record.inspect}" unless record.save(false) puts " - #{@model_class} #{condition_hash.inspect}" record 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 |