Help decoupling models with a foreign key relationship

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!

class Post
belongs_to :user
end

Then you can do post.user.name retrieve the name of the author of the
post

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?

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
[email protected]