2016-06-16 9 views
0

Rails newbie here;私は三つのクラスがある - ユーザー、記事、コメント -既存の2つのクラス間で参照を作成するにはどうすればよいですか?

class User < ActiveRecord::Base 
    has_many :articles 
end 

class Article < ActiveRecord::Base 
    belongs_to :user 
    has_many :comments 
end 

class Comment < ActiveRecord::Base 
    belongs_to :article 
end 

は、今私は、各コメントすなわちユーザー具体的には、コメントを望んだ、ユーザーにリンクされます(すべての記事がリンクしているだけでどのようにユーザー)。どうすればいいですか?それ以外の方法は、has_manyとbelongs_toをuser.rbに追加することです。& comment.rb?私は自分自身を明確にしたいと思う。

答えて

0

UserCommentと同様の関係を追加します。コメントにはuser_idarticle_idがあります。

class User < ActiveRecord::Base 
    has_many :articles 
    has_many :comments 
end 

class Article < ActiveRecord::Base 
    belongs_to :user 
    has_many :comments 
end 

class Comment < ActiveRecord::Base 
    belongs_to :article 
    belongs_to :user 
end 

あなたのcommentsテーブルにuser_idフィールドを追加するためにあなたのモデルを警告した後、移行を記述する必要があります。

rails g migration AddUserRefToComments user:references 

次に、rake db:migrateを実行します。希望が役立ちます。

+0

私はすでにそれを行っています。コントローラには何も必要ありませんか? – Arif

+0

いいえ、コントローラでは何もしません。しかし、新しいコメントを作成する際には、そのコメントに現在のユーザーのIDを保存する必要があります。 – Kumar

+0

ありがとう!おそらく厚いですが、現在のユーザーのIDをコメントに保存するのに問題があります。 '@ article.current_user.comments.create(comment_params)'を 'CommentController'の' create'メソッドで試しています。 '@article = Article.find(params [:article_id])'となりますが、エラーは – Arif

関連する問題