0

私は、そのような多くの電話を持つ顧客モデルを持っています。

class Customer < ActiveRecord::Base
  has_many :phones, as: :phoneable, dependent: :destroy
  accepts_nested_attributes_for :phones, allow_destroy: true
end

class Phone < ActiveRecord::Base
  belongs_to :phoneable, polymorphic: true
end

お客様が常に少なくとも 1 つのネストされた電話モデルを持っていることを確認したいと考えています。現時点ではこれをブラウザで管理していますが、サーバーにバックアップを提供したいと考えています (電話のない顧客レコードにいくつか遭遇しましたが、どのようにしてそのようになったのかよくわかりません。そのため、バックストップが必要です)。 .

これはモデルで達成可能でなければならないと考えていますが、それを行う方法がよくわかりません。これまでの私の試みはすべて失敗しました。電話モデルの before_destroy コールバックが必要だと思いますが、モデルの破壊を防ぐためにこれを記述する方法がわかりません。また、親モデルが破棄された場合にモデルを破棄できるようにするためにも必要です。なにか提案を?

4

1 に答える 1

0

次のように実行できます。

before_destory :check_phone_count

def check_phone_count
  errors.add :base, "At least one phone must be present" unless phonable.phones.count > 1
end
于 2012-09-23T21:07:40.750 に答える