QA@IT

「5レコード以上保存できない」というvalidationはどう書くのがきれいでしょうか

4010 PV
class User
  has_many :bookmarks
end

class Bookmark
  belongs_to :user
end

userbookmarkを5個まで追加できる」という場合にvalidationはどう書くのがきれいでしょうか。
ゆくゆくは
user#premium?の場合は100個まで保存できる」みたいに拡張していきたい感じです。

bookmarkのどのカラムにも対応しないのでどこに書いたらいいかイマイチしっくりきていません。

回答

class User
  has_many :bookmarks
end

class Bookmark
  belongs_to :user
  validate :check_count :on => :create

  private
  def check_count
    if self.user.bookmarks.size >= 5
      errors[:base] <<  "コレ以上作れませーん" 
    end
  end
end

簡単に書くとこんな感じでしょうか。
ほぼ同時に複数アクセス来た場合とか通り抜けちゃうのでその辺の対応も必要だと思いますが。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。