提问人:Samuel D. 提问时间:12/20/2022 最后编辑:Samuel D. 更新时间:12/23/2022 访问量:178
如何在 Rails 中验证多态场关联?
how to validate a polymorphic field association in rails?
问:
问题是,我有一个客户和地址模型,如下所示:
class Customer < ActiveRecord::Base
has_one :address, as: :addressable
end
class Address < ActiveRecord::Base
belongs_to :addressable, polymorphic: true
end
我有一个客户表单,其中包含渲染地址信息,例如:
# customers/form
= f.input :name
...
# render form/address
= f.input :apto
= f.input :city
= f.input :references
我正在寻找的是验证客户表单中的地址字段,如果用户没有输入任何值,那么它会阻止其创建或更新
pdd:地址实体是多态的,我可以在任何关系中使用它。但是当我以其他关系的形式使用它时,我不知道如何验证它的字段
如果您能帮助我,我将不胜感激,非常感谢您抽出宝贵时间阅读我。
更新 22/12/2022
我想专门验证仅在客户中而不是在其他实体中的地址字段(apto、city、reference)
由于任何其他实体都可以使用地址,并且在这些实体中,字段必须无需验证
非常感谢@max推荐validates_associates,但它会验证所有地址
答:
3赞
saviu-u
12/23/2022
#1
也许您正在寻找:
validate :validate_fields, if: -> { addressable_type == 'Customer' }
评论
1赞
Samuel D.
12/23/2022
它帮助了我@saviu-u,非常感谢您抽出宝贵时间并:D提供帮助。pdd:我将最大解决方案“validates_associated”与addressable_type混合以验证特定字段
评论
validates_associated
- 多态关联是无关紧要的,因为它适用于任何类型的关联。