2016-06-12 7 views
1

現在Subscriberモデルのhas_many commentscommentモデルはSubscriberに属しています。私はかなり新しいレールです。私は2つのモデルをどのように接続するのでしょうか?したがって、私がコメントを作成するときには、そのコメントをした特定のサブスクライバのIDがあります。今私は、ユーザーが好きな飲み物を入力することができるビューを持っており、そのコメントに1人の所有者を持たせたいと思っています。分かりやすくするために私のコードを示します。ありがとうございました!Active Record Associations - Rails

COMMENTコントローラ:

class CommentsController < ApplicationController 
def new 
    @comment = Comment.new 
end 

def create 
    @comment = Comment.create(comments_params) 
    if @comment.save 
    flash[:notice] = "Subscriber Has Been Successfully Created" 
    redirect_to new_subscriber_path(:comments) 
    else 
    render "new" 
    end 
    end 

    private 

    def comments_params 
    params.require(:comment).permit(:fav_drink) 
    end 
end 

SUBSCRIBERコントローラ:

class SubscribersController < ApplicationController 
    def index 
    @subscriber = Subscriber.all 
    end 

    def new 
    @subscriber = Subscriber.new 
    end 

    def create 
    @subscriber = Subscriber.create(subscriber_params) 
    if @subscriber.save 
    flash[:notice] = "Subscriber Has Been Successfully Created" 
    redirect_to new_subscriber_path(:subscriber) 
    else 
    render "new" 
    end 
    end 

COMMENTモデル:

class Comment < ActiveRecord::Base 
    belongs_to :subscriber 
end 

SUBSCRIBERモデル:

class Subscriber < ActiveRecord::Base 
    has_many :comments 
end 

Commentモデルにはsubscriber_idがありますので、今すぐ動作しています。私は2つの接続方法を知る必要があるので、各コメントは特定のサブスクライバに属しますので、私はユーザー@comment = @subscriber.comments.firstが最初のコメントを与える加入者。

+1

あなたの作成コメントアクションには、加入者からのアーティファクトがいくつかありますが、コントローラーコードと関連付けがうまくいくように見えます。移行/スキーマとビューはどのように見えますか?現在、コメントの作成アクションに送信されているパラメータは何ですか? –

答えて

1

基本的に、この行は更新する予定の行です:@comment = Comment.create(comments_params)

新しいレコードを購読に関連付ける場合は、Comment.createに渡す属性ハッシュにsubscriber_idキーを含めることができます。

comments_paramはメソッドですが、新しいレコードを作成するために使用される属性のハッシュを返します。この場合は{ fav_drink: "Tea" }となりますが、これには追加のキー・バリュー・セットが必要です。 subscriber_idをどうやって手に入れようとしているのか分かりませんが、おそらく "現在のユーザー"システムが必要です。

これは別の議論です(「現在のユーザー」の概念を得るためにRailsでauthを実装する方法)。

関連する問題