module Sequel::Seed::SeedDescriptor
Public Instance Methods
apply_seed_descriptor(seed_descriptor)
click to toggle source
# File lib/sequel/extensions/seed.rb, line 112 def apply_seed_descriptor(seed_descriptor) case seed_descriptor when Hash apply_seed_hash(seed_descriptor) when Array seed_descriptor.each { |seed_hash| apply_seed_hash(seed_hash) } end end
Private Instance Methods
apply_seed_hash(seed_hash)
click to toggle source
# File lib/sequel/extensions/seed.rb, line 123 def apply_seed_hash(seed_hash) return unless seed_hash.class <= Hash if seed_hash.has_key?("environment") case seed_hash["environment"] when String, Symbol return if seed_hash["environment"].to_sym != Seed.environment when Array return unless seed_hash["environment"].map(&:to_sym).include?(Seed.environment) end end keys = seed_hash.keys keys.delete("environment") keys.each do |key| key_hash = seed_hash[key] entries = nil class_name = if key_hash.has_key?("class") entries = key_hash["entries"] key_hash["class"] else Helpers.camelize(key) end # It will raise an error if the class name is not defined class_const = Kernel.const_get(class_name) if entries entries.each { |hash| create_model(class_const, hash) } else create_model(class_const, key_hash) end end end
create_model(class_const, hash)
click to toggle source
# File lib/sequel/extensions/seed.rb, line 155 def create_model(class_const, hash) object_instance = class_const.new object_instance_attr = hash.each do |attr, value| object_instance.set({attr.to_sym => value}) end raise(Error, "Attempt to create invalid model instance of #{class_name}") unless object_instance.valid? object_instance.save end