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.
A2c85dc5ee81b12e3cc0a6522e8d079d?d=identicon&s=25 Chris Hall (Guest)
on 2005-12-14 16: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?
25e11a00a89683f7e01e425a1a6e305c?d=identicon&s=25 Wilson Bilkovich (Guest)
on 2005-12-14 22:35
(Received via mailing list)
On 12/14/05, Chris Hall <christopher.k.hall@gmail.com> 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.
A2c85dc5ee81b12e3cc0a6522e8d079d?d=identicon&s=25 Chris Hall (Guest)
on 2005-12-15 03: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.
42292bf8a0acbc98862d9306b501275d?d=identicon&s=25 Daniel Waite (rabbitcreative)
on 2005-12-15 03:39
(Received via mailing list)
to_i also works. :)
This topic is locked and can not be replied to.