diff --git a/README.md b/README.md index 72e17c2..599445e 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,11 @@ Disable output To disable output from Seed Fu, set `SeedFu.quiet = true`. +Enable validate +-------------- + +To enable model validations from Seed Fu, set `SeedFu.validate = true`. + Handling large seed files ------------------------- diff --git a/lib/seed-fu.rb b/lib/seed-fu.rb index 4748559..e2e6eff 100644 --- a/lib/seed-fu.rb +++ b/lib/seed-fu.rb @@ -22,6 +22,11 @@ module SeedFu # `Rails.root/db/fixtures/Rails.env` @@fixture_paths = ['db/fixtures'] + mattr_accessor :validate + + # Set `SeedFu.validation = true` to validate seeds + @@validate = false + # Load seed data from files # @param [Array] fixture_paths The paths to look for seed files in # @param [Regexp] filter If given, only filenames matching this expression will be loaded diff --git a/lib/seed-fu/seeder.rb b/lib/seed-fu/seeder.rb index 37a3ea8..e589325 100644 --- a/lib/seed-fu/seeder.rb +++ b/lib/seed-fu/seeder.rb @@ -15,6 +15,7 @@ class Seeder # particular record. # @param [Hash] options # @option options [Boolean] :quiet (SeedFu.quiet) If true, output will be silenced + # @option options [Boolean] :validate (SeedFu.validate) If true, creations will be validated # @option options [Boolean] :insert_only (false) If true then existing records which match the # constraints will not be updated, even if the seed data has changed def initialize(model_class, constraints, data, options = {}) @@ -24,6 +25,7 @@ def initialize(model_class, constraints, data, options = {}) @options = options.symbolize_keys @options[:quiet] ||= SeedFu.quiet + @options[:validate] ||= SeedFu.validate validate_constraints! validate_data! @@ -71,7 +73,7 @@ def seed_record(data) else record.assign_attributes(data) end - record.save(:validate => false) || raise(ActiveRecord::RecordNotSaved, 'Record not saved!') + record.save!(:validate => @options[:validate]) || raise(ActiveRecord::RecordNotSaved, 'Record not saved!') record end