2012-07-01 3 views
0

Disons que j'ai un post, ce post devrait avoir un certain nombre de commentaires, et ces commentaires devraient être créés par les utilisateurs de certian. Ce sont mes modèles DataMapper:Datamapper deux associations en même temps

class User 
include DataMapper::Resource 

property :id, Serial 
property :name, String, 
property :password, String 

has n, :post 
end 

class Post 
include DataMapper::Resource 

property :id, Serial 
property :text, Text 
property :created_at, DateTime 

belongs_to :user 
end 

class Comment 
include DataMapper::Resource 

property :text, Text, 
property :created_at, DateTime 

belongs_to :post 
belongs_to :user 
end 

Alors disons que l'utilisateur x crée un poste et l'utilisateur y veut créer un commentaire à ce poste. Comment je fais ça alors? Je besoin de quelque chose comme ceci:

user = User.get(sessions[:user_id]) 
post = Post.get(params[:post_id]) 
comment = post.user.Comment.new { 
:text => "Bla", 
[...] 
} 

[...] 

comment.save 

[...] 

Alors basiquement le Post modèle doit être associé au Commentaire du modèle et le modèle Post, comment puis-je réaliser cela?

Répondre

3
comment = Comment.create :post => post, :user => user, :text => 'Foo' 
+0

Dois-je changer les modèles alors ou puis-je les laisser tels quels? –

+0

Les modèles sont ok. – ujifgc