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,

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.