Forum: Ruby on Rails AR object return nil on save

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.
C25909d53e693206a9ec8cbf0631092e?d=identicon&s=25 Witold Rugowski (viciu)
on 2008-10-25 13:14
(Received via mailing list)
Hi!
I'm upgrading existing app from Rails 1.2.6 to 2.1.2. I have
encountered following problem with AR objects.

Model definition did not change and with 1.2.6:


  params={}
  params[:flight] = "1111"
  params[:airline] = "Air France"
  params[:luggage] = 0
  r=Reservation.new params
  r.save

is working code, new Reservation. With the same dataset, changing only
Rails to 2.1.2 r.save returns nil, object does not get saved, nothing
in log file. Using save! raises no exception.

r.errors.full_messages
=> []

Any idea what is going on? I guess something rather strange, since
save should not return nil?

I'm using ruby 1.8.6-p111 on Windows, Rails 2.1.2. Tomorrow I will try
to run it on some Linux with newer Ruby.

I did remove all plugins - no change. Commented out all Reservation
model's validations, functions, etc. No change.

 What else I can try?



--
Witold Rugowski
Ruby on Rails freelancer
http://nhw.pl/wp/ (EN blog) http://nhw.pl/pl (PL blog)
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2008-10-25 14:24
(Received via mailing list)
On Oct 25, 12:07 am, Witold Rugowski <rugow...@nhw.pl> wrote:
>   r=Reservation.new params
> save should not return nil?
My guess is that you've accidentally overriden a function used by
rails (which perhaps did not exist in rail 1.2.6).
showing us your Reservation model might allow someone to confirm or
infirm that idea.

Fred
D3fc5887a2f39f2e0c8989d39ce5e6f9?d=identicon&s=25 Bharat Ruparel (bruparel)
on 2008-10-25 15:52
(Received via mailing list)
params={}
  params[:flight] = "1111"
  params[:airline] = "Air France"
  params[:luggage] = 0
  r=Reservation.new params
  r.save

params is a special hash class withindifferentaccess (whatever it
means).  So make sure that you Initialize that hash class rather than
a ruby native hash as you are doing above.  Rails adds extra methods
to hash class to make it indifferent to symbol keys or string keys I
believe.

I have run into a large number of issues like this while upgrading a
rails 1.2.6 app to rails 2.1.0 -- too many to list here.

You are also doing the r.save! which is guaranteed (relatively
speaking) to raise an error if not successful.
Dd9ab512706dd6cb1de818a658566ba2?d=identicon&s=25 nas (Guest)
on 2008-10-26 20:54
(Received via mailing list)
As bharat sait do r.save! instead of r.save to view the errors
raised...
C25909d53e693206a9ec8cbf0631092e?d=identicon&s=25 Witold Rugowski (viciu)
on 2008-11-01 00:55
(Received via mailing list)
>
> My guess is that you've accidentally overriden a function used by
> rails (which perhaps did not exist in rail 1.2.6).
> showing us your Reservation model might allow someone to confirm or
> infirm that idea.

Yes You were right. Model Reservation had field transaction - it has
overwritten
http://apidock.com/rails/ActiveRecord/Transactions...

--
Witold Rugowski
Ruby on Rails freelancer
http://nhw.pl/wp/ (EN blog) http://nhw.pl/pl (PL blog)
This topic is locked and can not be replied to.