1

私はユーザーモデルを持っていて、carrierwaveを備えた画像モデルを持っています。

ユーザーがアップロードできる画像の量を制限したいのは、ユーザーが画像をアップロードするための2番目のフォームがあり、3つの画像しかアップロードできないようにするためです。これに対するエレガントな解決策はありますか?または、ユーザーが画像の量をカウントするカスタムバリデーターを作成する必要がありますか?

4

1 に答える 1

6

私はあなたのモデルがどういうわけかそれに似ていると思います:

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
于 2013-01-09T15:15:53.973 に答える