Forum: Ruby on Rails Help using a rake task to add items to my database?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Sharon M. (Guest)
on 2009-01-26 00:45
(Received via mailing list)
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.
Andrew B. (Guest)
on 2009-01-26 01:35
(Received via mailing list)
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.
Patrick D. (Guest)
on 2009-01-26 03:17
(Received via mailing list)
>
> 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
Sharon M. (Guest)
on 2009-01-26 03:27
(Received via mailing list)
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.
This topic is locked and can not be replied to.