2010-07-31 7 views
0

Dans le code suivant un poste est créé et appartient à personne:Ruby on Rails question de la migration

class Person < ActiveRecord::Base 
    has_many :readings 
    has_many :posts, :through => :readings 
end 

person = Person.create(:name => 'john') 
post = Post.create(:name => 'a1') 
person.posts << post 

Mais je me demande qui lecture de ce post fait partie quand il est sauvé.

Je ne comprends pas très bien cela.

Merci

Répondre

1

post.reading serait nul

Maintenant, je ne pense pas que ce soit ce que vous voulez, alors vous voudrez probablement protéger contre que les êtres sauvés:

class Reading < ActiveRecord::Base 
    belongs_to :person 
    has_many :posts 
    validates_presence_of :person 
end 

Mais, cela me semble encore un peu faux ... Je pense que vous pourriez avoir une personne seule, et un message seul, mais une lecture est l'intersection d'une personne et un poste. Dans ce cas:

class Person 
    has_many :readings 
end 

class Post 
    has_many :readings 
end 

class Reading 
    belongs_to :person 
    belongs_to :post 
    validates_presence_of :person, :post 
end