First off, I'm new to rails - this is only my second day playing with
it. Here's my problem.
I have a post model and a user model. I want to have a has_one
relationship between posts and users. Meaning a post 'has_one' user
(author). I feel like I'm doing things right in the model but I'm just
not understanding the "for" loops yet. Take a look at the show.rhtml to
see my messed up for loop.
Any help is appreciated, here is some of the code
I have a post model and a user model. I want to have a has_one
relationship between posts and users. Meaning a post 'has_one' user
(author). I feel like I'm doing things right in the model but I'm just
not understanding the "for" loops yet. Take a look at the show.rhtml to
see my messed up for loop.
Ah - you may be getting slightly mixed up. A post belongs to a user and a user has many posts. This One to Many relationship should be defined like this:
class Post < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :posts
end
has_one is used for a One to One relationship - like that between, for example, orders and invoices. In this case an order has one invoice and an invoice has one order.
Hope that helps,
Steve
Curmorpheus <curt.mills@...> writes:
I have a post model and a user model. I want to have a has_one
relationship between posts and users. Meaning a post 'has_one' user
(author). I feel like I'm doing things right in the model but I'm just
not understanding the "for" loops yet. Take a look at the show.rhtml to
see my messed up for loop.
It doesn't sound like you need a loop at all - since a post only has one user,
you just call post.user
The Rails magic here happens when you put "has_one :user" in the model - that
line creates the .user and .user= methods among others. If you'd used "has_many
:users" then a different set of methods would have been created, including .users
http://api.rubyonrails.com/classes/ActiveRecord/Associations/ClassMethods.html
has more info.
Gareth