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

我想确保客户始终拥有至少一种嵌套电话型号。目前我在浏览器中管理这个,但我想在服务器上提供一个备份(我遇到了几个没有电话的客户记录,不太清楚他们是怎么做到的,所以我需要一个支持) .

我认为这必须在模型中实现,但我不太确定如何做到这一点。到目前为止,我所有的尝试都失败了。我认为手机模型中的 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 回答