help decoupling models with a foreign key relationship

3 views
Skip to first unread message

robo

unread,
Feb 9, 2010, 11:00:10 PM2/9/10
to Ruby on Rails: Talk
Recently started working with rails; I'm very impressed so far, but I
do have a question -

Say I'm running a blog-type application. I've got a Users table, and
a Posts table. Each post on the blog is made by a user. The Post
table has an FK user_id that keeps track of the author of the post.
This is all well and good, but I've found myself doing this a lot:

class Post
def get_author_name
user = User.find(user_id)
user.name
end
end

which definitely works for retrieving the author name when I'm
rendering my view, but I'm worried I'm going to be weaving my classes
too tightly, especially given how often this type of scenario can come
up.

Does anyone have a better approach?

Thanks!

Sharagoz --

unread,
Feb 10, 2010, 5:44:01 AM2/10/10
to rubyonra...@googlegroups.com

class Post
belongs_to :user
end


Then you can do post.user.name retrieve the name of the author of the
post
--
Posted via http://www.ruby-forum.com/.

robo

unread,
Feb 10, 2010, 8:46:26 AM2/10/10
to Ruby on Rails: Talk
That's handy! Does that work too if I say

class Post
has_one :user
end

I guess the real question is - what's the difference between has_one
and belongs_to?

Marnen Laibow-Koser

unread,
Feb 10, 2010, 9:07:04 AM2/10/10
to rubyonra...@googlegroups.com
robo wrote:
> That's handy! Does that work too if I say
>
> class Post
> has_one :user
> end
>
> I guess the real question is - what's the difference between has_one
> and belongs_to?

The location of the foreign key. Go read the Associations docs.

Best,
-- 
Marnen Laibow-Koser
http://www.marnen.org
mar...@marnen.org

Mat Brown

unread,
Feb 10, 2010, 9:09:39 AM2/10/10
to rubyonra...@googlegroups.com

belongs_to means the foreign key is an attribute of this model. has_one/has_many means it's an attribute of the associated model.

On Feb 10, 2010 8:47 AM, "robo" <chase.dela...@gmail.com> wrote:

That's handy!  Does that work too if I say

class Post
 has_one :user
end

I guess the real question is - what's the difference between has_one
and belongs_to?


On Feb 10, 4:44 am, Sharagoz -- <li...@ruby-forum.com> wrote:
> class Post
>   belongs_to :user

> e...

> Posted viahttp://www.ruby-forum.com/.


--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk"...

Reply all
Reply to author
Forward
0 new messages