我有一个像这样的手机型号的客户型号;
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回调是我想要的,但我不知道如何写这个来防止模型的破坏。如果父模型已被销毁,我还需要它来允许销毁模型。有什么建议吗?
答案 0 :(得分: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