datatype error in ROR

I have been facing some problem with the datatypes. I have a sample of code as follows.

  t.lat_rad = (l.lat * BigDecimal.new("3.1415926536 / 180")).to_f    t.lng_rad = (l.lng * BigDecimal.new("3.1415926536 / 180")).to_f

Initially, the datatype of lat_rad and lng_rad was as follows:

t.decimal :lat_rad, :precision => 15, :scale => 10   t.decimal :lng_rad, :precision => 15, :scale => 10

So, it gave me an error as follows:

TypeError in ItemsController#populate

wrong argument type BigDecimal (expected Float)

Then I changed the data type of lat_rad and lng_rad to float. Even then it is giving me the same error. Any help to solve this problem will be appreciated. Thanks in advance.

I have been facing some problem with the datatypes. I have a sample of code

as follows.

t.lat_rad = (l.lat * BigDecimal.new(“3.1415926536 / 180”)).to_f

t.lng_rad = (l.lng * BigDecimal.new(“3.1415926536 / 180”)).to_f

Initially, the datatype of lat_rad and lng_rad was as follows:

t.decimal :lat_rad, :precision => 15, :scale => 10

t.decimal :lng_rad, :precision => 15, :scale => 10

So, it gave me an error as follows:

TypeError in ItemsController#populate

wrong argument type BigDecimal (expected Float)

Then I changed the data type of lat_rad and lng_rad to float. Even then it

is giving me the same error. Any help to solve this problem will be

appreciated. Thanks in advance.

What’s the type of

l.lat

l.lng

Also, are the following lines within a migration or controller file?

t.lat_rad = (l.lat * BigDecimal.new(“3.1415926536 / 180”)).to_f

t.lng_rad = (l.lng * BigDecimal.new(“3.1415926536 / 180”)).to_f

Lastly, what version of Ruby and which database you’re using?

-Conrad

Conrad, The data type of l.lat and l.lng are same as that of lat_rad and lng_rad. They are declared as follows:

t.decimal :lat, :precision => 15, :scale => 10 t.decimal :lng, :precision => 15, :scale => 10

The following lines are within the controller file named items_controller.rb

t.lat_rad = (l.lat * BigDecimal.new("3.1415926536 / 180")).to_f t.lng_rad = (l.lng * BigDecimal.new("3.1415926536 / 180")).to_f

I'm using Ruby version 4.2 on Ubuntu 8.10. The database I'm using is mysql.

Conrad Taylor wrote:

Conrad,

The data type of l.lat and l.lng are same as that of lat_rad and lng_rad.

They are declared as follows:

t.decimal :lat, :precision => 15, :scale => 10

t.decimal :lng, :precision => 15, :scale => 10

The following lines are within the controller file named items_controller.rb

t.lat_rad = (l.lat * BigDecimal.new(“3.1415926536 / 180”)).to_f

t.lng_rad = (l.lng * BigDecimal.new(“3.1415926536 / 180”)).to_f

I’m using Ruby version 4.2 on Ubuntu 8.10.

The database I’m using is mysql.

Ruby version 4.2 doesn’t exist. Please execute the following command

and post the results:

ruby -v

Next, what’s the exact value of both l.lat and l.lng?

-Conrad

I had actually executed the command dpkg -s ruby It had given me the version as 4.2 When I did a ruby -v, it gave me the version as 1.8.7

l.lat will have some value such as 40.755970 l.lng will have some value such as -73.986702

But since they have been declared as Decimal(15,10), their values will be interpreted as 40.7559700000 and -73.9867020000

I have a database which consists of latitude and longitude of a few cities in US. So, this was just one example that I have given.

Conrad Taylor wrote:

I would suggest first splitting the statement into several lines performing a single operation on each line, this will enable you to identify which part of the statement is generating the error. Also try playing in ruby console to try and see what is going on. Finally you could use ruby-debug to break in to the code and examine the types of the variables to find what may not be quite as you expect.

Also you did not answer the question as to whether this is in a migration. If so then it fraught with problems, it is not advisable to seed data within a migration if that is what you are doing.

Colin

Colin, this is in a migration. But I did not understand the last para of your reply. As you have suggested, I will first try it on script/console and den let me try to know where exactly the error is happening.

Colin Law-4 wrote:

Colin, this is in a migration. But I did not understand the last para of your reply.

Have a look at http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/f23f96c71facf726 for a discussion on why it is not a good idea to seed in migrations. Also google for 'rails migration seed' will provide many hits.

Could you not top post please? If you had put the above query under the offending paragraph we would not have had to scroll down to find to what you were referring. Thanks.

Colin

As you have suggested,

Thanks once again. I'm sorry for giving you the trouble to scroll down to see the query that I was referring to. I am quite new to nabble. henceforth, I'll make it a point to top post such things

Colin Law-4 wrote: