1

cocoon とモデルに許可されているフィールド数の検証で問題が発生しています。cocoon, rails3 を使用して、自分の場所に多くのリンクがあるネストされたフォームを作成しました。

各場所のリンク数を 5 に制限する必要があります。

私の location.rb モデルには、次のものがあります。

 class Location < ActiveRecord::Base

   has_many :links
   accepts_nested_attributes_for :links, :reject_if => lambda { |a| a[:link_name].blank? }, :allow_destroy => true   
   validate :check_link_count

   ...

   def check_link_count
      if self.links.count > 5
        self.errors.add :base, "No more than 5 links allowed."
      end
   end

   ...

最大 5 つのリンクを追加すると、すべて正常に機能します。

6 つのリンクを追加して保存すると、エラーが発生します。また良い。

問題は、リンクを削除しようとするときです-リンクは保存後にのみ削除されるようです(私は思います)。したがって、すべてのフィールドを削除しても、エラーが発生します。

助言がありますか?検証する別の方法はありますか?

4

1 に答える 1

3

うーん。このようなものを試すことができます

 def check_link_count
    if self.links.reject(&:marked_for_destruction?).count > 5
      self.errors.add :base, "No more than 5 links allowed."
    end
 end
于 2012-04-09T22:23:25.937 に答える