Forum: Ruby on Rails why would an int column in a join table be a String class in

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.
Chris H. (Guest)
on 2005-12-14 17:12
(Received via mailing list)
i've got an issue with integer columns in the database becoming strings
in
the model and I'm not sure why this is happening.  perhaps someone can
explain.

given the following setup (simplified for example)

tables:

users
----------
id - int
name - varchar(60)

roles
----------
id - int
name - varchar(60)

roles_users (join table)
----------
role_id - int
user_id - int
default_flag - int

data:

user => 1, 'joe'
role => 1, 'admin'
roles_users => 1, 1, 1

models:

class User < ActiveRecord::Base
  has_and_belongs_to_many :roles
end

class Role < ActiveRecord::Base
  has_and_belongs_to_many :users
end

console:

>> user = User.find(1)
=> #<User:0xb771b494 @attributes={"id"=>"1", "location_id"=>nil,
"active_flag"=>"1", "name"=>"joe"}
>>> user.roles[0].default_flag.class
=> String
>> user.roles[0].id.class
=> Fixnum


shouldn't default_flag be a Fixnum?
Wilson B. (Guest)
on 2005-12-14 23:35
(Received via mailing list)
On 12/14/05, Chris H. <removed_email_address@domain.invalid> wrote:
> i've got an issue with integer columns in the database becoming strings in
> the model and I'm not sure why this is happening.  perhaps someone can
> explain.
<snip>

Is this possibly the same issue as this ticket?
http://dev.rubyonrails.org/ticket/240

--Wilson.
Chris H. (Guest)
on 2005-12-15 04:00
(Received via mailing list)
thanks.  sometimes i forget to go look at trac.

yes, it looks to be the same...i see a fix has been pushed back to
1.x...noproblem, i can always do == "1" in the meantime.
Daniel W. (Guest)
on 2005-12-15 04:39
(Received via mailing list)
to_i also works. :)
This topic is locked and can not be replied to.