私はこれをやろうとしましたが、失敗しました。デフォルトの写真を選択することがすべてのソーシャルネットワークのオプションであることを考えると、これは奇妙です. 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