0
Ruby on Railsには比較的新しく、私はPaperclip画像を添付して表示するための簡単なUploadsモデルを作成しています。すべて正常に動作していますが、現在のユーザーには常に6枚以下の画像をアップロードするように制限したいと考えています。ユーザーによるアップロード数を制限する方法は?
これをどのファイルとどのコードに追加しますか?私が作成する将来のモデルについてこれを知ることは、非常に役に立ちます!
私はかなり小さなコードだと思っていますが、どこでもオンラインで回答を見ることはできません...ありがとう!アップロードモデル
class UploadsController < ApplicationController
before_action :set_upload, only: [:show, :edit, :update, :destroy]
# GET /uploads
# GET /uploads.json
def index
@uploads = Upload.all
end
# GET /uploads/1
# GET /uploads/1.json
def show
end
# GET /uploads/new
def new
@upload = current_user.uploads.build
end
# GET /uploads/1/edit
def edit
end
# POST /uploads
# POST /uploads.json
def create
@upload = current_user.uploads.build(upload_params)
respond_to do |format|
if @upload.save
format.html { redirect_to @upload, notice: 'Upload was successfully created.' }
format.json { render :show, status: :created, location: @upload }
else
format.html { render :new }
format.json { render json: @upload.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /uploads/1
# PATCH/PUT /uploads/1.json
def update
respond_to do |format|
if @upload.update(upload_params)
format.html { redirect_to @upload, notice: 'Upload was successfully updated.' }
format.json { render :show, status: :ok, location: @upload }
else
format.html { render :edit }
format.json { render json: @upload.errors, status: :unprocessable_entity }
end
end
end
# DELETE /uploads/1
# DELETE /uploads/1.json
def destroy
@upload.destroy
respond_to do |format|
format.html { redirect_to uploads_url, notice: 'Upload was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_upload
@upload = Upload.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def upload_params
params.require(:upload).permit(:upload_title, :upload_description, :upload_datecreated, :user_id, :picture, :delete_picture)
end
end
:
class Upload < ActiveRecord::Base
belongs_to :user
has_attached_file :picture, styles: { large: "600x600#", medium: "300x300#", small: "150x150#", thumb: "50x50#" }, default_url: "/images/:style/missing.png"
validates_attachment_content_type :picture, content_type: /\Aimage\/.*\Z/
before_validation { image.clear if @delete_image }
def delete_picture
@delete_image ||= false
end
def delete_picture=(value)
@delete_image = !value.to_i.zero?
end
end
迅速な返信デニスのおかげでそれはのために動作していないよう
私UploadsControllerは(簡単な足場とクリップの設定をしました)私。上記のようにアップロードモデルに追加しても、1人のユーザーで6つ以上の画像を添付することができます。私のPaperclip添付ファイルの名前は「画像」ではなく「画像」であり、それはまったく問題になりますか? – Senator
画像はアップロードモデルの属性です。あなたのモデルのユーザーhas_many:アップロード。アップロードでuser_id属性が設定されていることを確認できますか?、コンソールで試してみてください。 User.first.uploads.count – DennisCastro
アップロードモデルの各レコードのユーザー属性を見ると、レコードごとに異なる長い理解できないID#です。しかし、user_idはそのユーザーの通常の数値です。Deviseはここで何か不思議なことをしていますか? – Senator