Update geometry field using SQL with ActiveRecord

I am trying to insert lat/long into mysql from a ruby object. Here is
the method that mysql requires: "GeomFromText('POINT(35.211232
-111.613529))"

So I need to insert this into the "geometry" field. The only way I can
figure out how to do this is to use straight sql. The sql works
directly.

UPDATE companies SET location =
GeomFromText('POINT(35.211232 -111.613529)') where id =1234

I tried to set the field using assignment:

object.locaiton = "GeomFromText('POINT(35.211232 -111.613529))"

This gives the error:
Mysql::Error: #22003Cannot get geometry object from data you send to
the GEOMETRY field:

Then I tried:

Company.find_by_sql("UPDATE companies SET location =
GeomFromText('POINT(35.211232 -111.613529)') where id = #{object.id}")

Which gives the error:

mysql_adapter.rb:482:in `select': You have a nil object when you
didn't expect it! (NoMethodError)

How can I use an update statement in SQL using an ActiveRecord object?

Any help at this point would be appreciated.

Andrew Dubinsky wrote:

Company.find_by_sql("UPDATE companies SET location =
GeomFromText('POINT(35.211232 -111.613529)') where id = #{object.id}")

class SomeModel < ActiveRecord::Base
  def update_geo(point)
    res = connection.execute <<- END
      update companies set location = GeoFromText('#{point}') where id =
#{self.id}
    END
  end
end

hth

ilan

Thanks for the help, Ilan.

I implemented that code and the sql errors went away. However, it
still does not update the field.

Here is the code I used in the model:

  def update_geo(point)
    sql = "UPDATE title_companies set location =
PointFromText('POINT(#{point.lat} #{point.long})') WHERE
ID=#{self.id};"
    self.connection.execute(sql)
  end

It runs with no errors, execute returns nil (as documented). I have
tried with and without self.save, but with no effect. (GeomFromText ==
PointFromText)

If I insert the sql directly into the query browser, it works fine.

Am I missing something straightforward, like clearing the connection
or using transactions?

TIA