Using saved object in same controller

Hi, I’m having a bit of an IF-statement-problem that produces a
NoMethodError if it’s included in my method, although there is a
corresponding column in my table. What I want to do is check if an
record exists, or else I would like to create a new one based on
previously defined variables in my method.

def ait
@country = ‘Some place warm’
@location = Location.find_by_adress(@requested_adress)
if @location = nil
@new_location = Location.new
@new_location.adress = @requested_adress
@new_location.country = @hostname
@new_location.save
@location = @location_ip
end
render :text => @location.country
end

Without the if-statement, it all works fine but when it’s included I
get:

NoMethodError in TestsController#cached_hostname_reaction
You have a nil object when you didn’t expect it!
The error occurred while evaluating nil.country

It seems to me that I’m missing some fundamental Ruby-aspect, but I
can’t figure out what…

Many thanks!

Got it, by rewriting the if-statement like this:

if Location.find_by_adress(@requested_adress)
@location = Location.find_by_adress(@requested_adress)
else
@location = Location.new
@location.adress = @requested_adress
@location.country = @hostname
@location.save
end

Is there a more elegant way to do it?

if @location.nil?

not if @location = nil

On Jan 15, 2008 1:21 PM, Gu stav [email protected]
wrote:

if @location = nil
get:
Posted via http://www.ruby-forum.com/.


Ryan B.
http://www.frozenplague.net
Feel free to add me to MSN and/or GTalk as this email.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs