Help using a rake task to add items to my database?


#1

Once a month or so, I’d like to pull data from an RSS feed and add it
into my database. I’ve written a rake task that properly reads the
feed, parses it and assigns the correct information to new instances
of my @event model - when I run the rake task and have it print out
the various @event attributes, they’re correct. However, when I
include the command @event.save nothing happens.

In fact, when I added this code

if @event.save
puts “Event saved”
else
puts “Event not saved, bummer”

I got “Event not saved, bummer”

Is it possible to use a rake task to add entries to my application’s
database? If so, any suggestions as to what I might be doing wrong?
I’m testing this in my development environment, and I start my task
definition using

task (:parse_info => :environment) do

Any suggestions would be greatly appreciated. Thanks.


#2

Try this and see what is printed:

if @event.save
puts “Event saved”
else
puts @event.errors.full_messages.inspect
end

What you’re doing sounds right, most likely though you have a
validation that is keeping the model from saving.


#3

What you’re doing sounds right, most likely though you have a
validation that is keeping the model from saving.

or, possibly a before_filter.

–wpd


#4

Yes, thank you so much, that’s exactly it! A nil value for one of the
attributes was triggering an error, because there’s a validation for a
maximum value. I gather a maximum value validation requires there to
be a value to check and not nil. Changing that attribute to a
string="" for all the entries solved the problem.