2015-05-18 2 views
0

Я использую устройство для аутентификации, я хочу связать user_id с моделью комментариев. Он работает, когда я отправляю user_id в качестве параметра, но я хочу автоматически установить текущий пользовательский user_id пользователя для каждого комментария. Как я могу это сделать?Связать user_id с моделью комментариев?

#model/post.rb 
 

 
class Post < ActiveRecord::Base 
 
    has_many :comments 
 
    belongs_to :category 
 
end 
 

 
#model/comment.rb 
 

 
class Comment < ActiveRecord::Base 
 

 
    belongs_to :post 
 
end 
 

 
#model/category.rb 
 
    has_many :posts 
 
#controllers/comments_controller 
 

 
class CommentsController < ApplicationController 
 
    before_action :set_comment, only: [:show, :edit, :update, :destroy] 
 
    before_action :authenticate_user! 
 

 

 
# GET /comments 
 
# GET /comments.json 
 
def index 
 
    @comments = Comment.all 
 
end 
 

 
# GET /comments/1 
 
# GET /comments/1.json 
 
def show 
 
end 
 

 
# GET /comments/new 
 
def new 
 
    @comment = Comment.new 
 
end 
 

 
# GET /comments/1/edit 
 
def edit 
 
end 
 

 
# POST /comments 
 
# POST /comments.json 
 
def create 
 
    @comment = Comment.new(comment_params) 
 

 
    respond_to do |format| 
 
    if @comment.save 
 
     format.html { redirect_to @comment, notice: 'comment was successfully created.' } 
 
     format.json { render :show, status: :created, location: @comment } 
 
    else 
 
     format.html { render :new } 
 
     format.json { render json: @comment.errors, status: :unprocessable_entity } 
 
    end 
 
    end 
 
end 
 

 
# PATCH/PUT /comments/1 
 
# PATCH/PUT /comments/1.json 
 
def update 
 
    respond_to do |format| 
 
    if @comment.update(comment_params) 
 
     format.html { redirect_to @comment, notice: 'comment was successfully updated.' } 
 
     format.json { render :show, status: :ok, location: @comment } 
 
    else 
 
     format.html { render :edit } 
 
     format.json { render json: @comment.errors, status: :unprocessable_entity } 
 
    end 
 
    end 
 
end 
 

 
# DELETE /comments/1 
 
# DELETE /comments/1.json 
 
def destroy 
 
    @comment.destroy 
 
    respond_to do |format| 
 
    format.html { redirect_to comments_url, notice: 'comment was successfully destroyed.' } 
 
    format.json { head :no_content } 
 
    end 
 
end 
 

 
private 
 
    # Use callbacks to share common setup or constraints between actions. 
 
    def set_comment 
 
    @comment = Comment.find(params[:id]) 
 
    end 
 

 
    # Never trust parameters from the scary internet, only allow the white list through. 
 
    def comment_params 
 
    params.require(:comment).permit(:rating, :comment, :post_id, :user_id) 
 
    end 
 
end

+0

'@comment.user = текущий_user' – max

ответ

2

использование ассоциаций user has_many comments and comments belongs_to user

def new @comment = current_user.comments.build end

def create @comment = current_user.comments.build(comment_params) end

+0

спасибо, что работает! – user121212

Смежные вопросы