私はユーザーモデルを持っていて、carrierwaveを備えた画像モデルを持っています。
ユーザーがアップロードできる画像の量を制限したいのは、ユーザーが画像をアップロードするための2番目のフォームがあり、3つの画像しかアップロードできないようにするためです。これに対するエレガントな解決策はありますか?または、ユーザーが画像の量をカウントするカスタムバリデーターを作成する必要がありますか?
私はユーザーモデルを持っていて、carrierwaveを備えた画像モデルを持っています。
ユーザーがアップロードできる画像の量を制限したいのは、ユーザーが画像をアップロードするための2番目のフォームがあり、3つの画像しかアップロードできないようにするためです。これに対するエレガントな解決策はありますか?または、ユーザーが画像の量をカウントするカスタムバリデーターを作成する必要がありますか?
私はあなたのモデルがどういうわけかそれに似ていると思います:
class User
has_many :photos
end
class Photo
belongs_to :user
mount_uploader :file, PhotoUploader
end
つまり、ユーザーが持つことができる写真の数に関する検証をユーザーに追加するだけで済みます。あなたはその投稿を見ることができます:has_manyアソシエーションのオブジェクトの数を制限します
あなたはあなたの写真モデルでそのようなものになってしまうでしょう:
LIMIT = 3
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