I have a very odd situation.
I have a method in my application controller:
def manual_location(city, region, country) result = Location.user_created(params[:new_city], params[:new_region], params[:new_country])
case result when true then return Location.find(:first, :conditions => ["city = ? AND region = ? AND country = ?", params[:new_city], params[:new_region], params[:new_country]]).id when -1 then flash[:error] = "There was an error saving the location to the database." when false then flash[:error] = "You didn't provide all three values: City, Region, and Country" end return false end
This is the user_created method from the Location model:
def self.user_created(city, region, country) unless (city && region && country) # Unless we have all three it is invalid return false end
# Either case below it should exist by the time we finish so return true
check = Location.find(:first, :conditions => ["city = ? AND region = ? AND country = ?", city, region, country])
if check return true end
location = Location.new(:city => city, :region => region, :country => country)
if location.save return true else return -1 end end
When I call the method from one controller it works no problem, however when I call it from a different contoller I get NilClass errors.
This doesn't happen at all on the Windows box I have at work, I only get the odd behavior on my Linux machine at home.
Does anyone have any ideas?
I realize the model method is ugly, I wrote it late at night and haven't gotten around to cleaning it up.