0

私はこれをやろうとしましたが、失敗しました。デフォルトの写真を選択することがすべてのソーシャルネットワークのオプションであることを考えると、これは奇妙です. CarrierWave ジェムがあり、ユーザーが既にアップロードした写真から ProfileImage (デフォルトの画像) を選択できるように設定したいと考えています。この写真はサイト全体で使用されます。アバターを持っているようなものですが、そこにある記事では、アップロードした写真からアバターを選択するのではなく、アバターをアップロードする方法しか示していません. これは一般的な機能であるため、他の人にも役立つと確信しています。

写真コントローラー:

def new 
    @photo = Photo.new
  end

  def create
    @photo = Photo.new(params[:photo])
    @photo.user = current_user
    if @photo.save
      flash[:notice] = "Successfully created photos."
      redirect_to :back
    else
      render :action => 'new'
    end
  end

  def edit
    @photo = Photo.find(params[:id])
  end

  def update
    @photo = Photo.find(params[:id])
    if @photo.update_attributes(paramas[:photo])
      flash[:notice] = "Successfully updated photo."
      redirect_to @photo.gallery
    else
      render :action => 'edit'
    end
  end

  def destroy
    @photo = Photo.find(params[:id])
    @photo.destroy
    flash[:notice] = "Successfully destroyed photo."
    redirect_to @photo.gallery
  end
end

ユーザーモデル:

# It is setup so no gallery is created, and photos are associated with the user.

  private
  def setup_gallery
     Gallery.create(user: self)
   end

写真のモデル:

  attr_accessible :title, :body, :gallery_id, :name, :image, :remote_image_url
  belongs_to :gallery
  has_many :gallery_users, :through => :gallery, :source => :user
  belongs_to :user
  mount_uploader :image, ImageUploader

  LIMIT = 5

  validate do |record|
    record.validate_photo_quota
  end

  def validate_photo_quota
    return unless self.user
    if self.user.photos(:reload).count >= LIMIT
      errors.add(:base, :exceeded_quota)
    end
  end
end
4

2 に答える 2