Replacing the ID with the value

Hi. I have a project based on Rails 3.0.3 and MySQL.

There are 2 tables (not all columns shown):

1. users (id, name, group_id)

class User < ActiveRecord::Base
  belongs_to :groups
end

2. groups (id, name)

class Group < ActiveRecord::Base
  has_many :users
end

Console output:

irb(main):001:0> User.first
=> #<User id: 1, name: "John Smith", group_id: 3>

How can i do that besides the "group_id: 3" result the query will
return the Group name too. For example:

irb(main):001:0> User.first
=> #<User id: 1, name: "John Smith", group_id: 3, group:
"Administrator">

I can do this by using the JOIN statement in mysql, but i need to use
raw sql queries. May be there is a way to do it by using ActiveRecord
style ?

Have a look at the documentation:
http://ar.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

"Eager loading" is probably your friend, but you can also do what you
want by changing the :select option of any AR query.

Hi. I have a project based on Rails 3.0.3 and MySQL.

There are 2 tables (not all columns shown):

1. users (id, name, group_id)

class User < ActiveRecord::Base
belongs_to :groups

That should be :group (singular), user belongs to one group so singular.

end

2. groups (id, name)

class Group < ActiveRecord::Base
has_many :users
end

Console output:

irb(main):001:0> User.first
=> #<User id: 1, name: "John Smith", group_id: 3>

How can i do that besides the "group_id: 3" result the query will
return the Group name too. For example:

You can just say
User.first.group.name
or
user = User.first
group_name = user.group.name

Rails will fetch the group from the database when you reference it.
Alternatively you may use the :include option on find to force it to
fetch the user and group in one query if you are running into
performance problems.

Colin