2017-02-16 11 views
0

Я позволил пользователям загружать фотографии с помощью paperclip, но на фотографии нет права собственности. Это означает, что я не знаю, кто загрузил фотографии вообще.rails user_id добавить к картинке

Здесь я хотел бы, чтобы кто-то загрузил фотографию, которую вы знаете, ее загрузил пользователь. У меня есть столбец user_id. но я не знаю, как реализовать код в контроллере pic

Как это сделать? Благодаря!

class PicsController < ApplicationController 
before_action :find_pic, only: [:show, :edit, :update, :destroy] 

def index 
    @user = User.find(params[:user_id]) 
    @pics = Pic.all.order("created_at DESC") 

end 

def show 

end 

def new 
    @pic = Pic.new 
end 

def create 
    @pic.user = current_user 
    @pic = Pic.new(pic_params) 
    if @pic.save 
     redirect_to @pic, notice: "Yes it was posted" 
    else 
     render 'new' 
    end 
end 

def edit 
    @user = User.find(params[:user_id]) 
    @profile = @user.profile 
end 

def update 
    if @pic.update(pic_params) 
     redirect_to @pic, notice: "Congrates Pic was upaded" 
    else 
     render 'new' 
    end 
end 

def destroy 
    @pic.destroy 
    redirect_to users_path 
end 


private 

def pic_params 
    params.require(:pic).permit(:title, :description, :profile_id) 
end 

def find_pic 
    @pic = Pic.find(params[:id]) 
    end 

конца

class UsersController < ApplicationController 
before_action :authenticate_user! 

def index 
    @pics = Pic.all.order("created_at DESC") 
end 

Защита показать @user = User.find (Params [: ID]) @pics = User.find_by (user_name: PARAMS [: user_name]) конца

конец

class ProfilesController < ApplicationController 
before_action :authenticate_user! 
before_action :only_current_user 


def new 
    @user = User.find(params[:user_id]) 
    @profile = Profile.new 
end 

def create 
    @user = User.find(params[:user_id]) 
    @profile = @user.build_profile(profile_params) 
    if @profile.save 
     redirect_to user_path(params[:user_id]) 
    else 
     render action: :new 

    end 
end 

def edit 
    @user = User.find(params[:user_id]) 
    @profile = @user.profile 

end 

def update 
    @user = User.find(params[:user_id]) 
    @profile = @user.profile 
    if @profile.update_attributes(profile_params) 
     flash[:success] = "Profile Updated" 
     redirect_to user_path(params[:user_id]) 
    else 
     render action: :edit 
    end 
end 


private 

def profile_params 
    params.require(:profile).permit(:avatar, :user_name, :contact_email, :description) 
end 

def only_current_user 
    @user = User.find(params[:user_id]) 
    redirect_to(root_url) unless @user == current_user 
end 

конец

+0

Можете ли вы указать свои модели пользователей и Pic, поэтому я могу видеть, как вы создаете ассоциации между двумя объектами в базе данных. – JayJay

ответ

0

Если пользователь может быть идентифицирован во время процесса загрузки, вы можете попытаться передать user_id в скрытом поле во время загрузки. Вы сказали, что уже создали столбец user_id.

<%= f.hidden_field :user_id , value: @user.id %> 

Чтобы этот код работал, вам нужно найти @user в действии вашего контроллера. Аналогично тому, что вы делаете уже в своем действии «index»: найдите пользователя: user_id Если вы используете devise для пользователя, вы можете использовать current_user.id.

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

  • Нет связанных вопросов^_^