我有一个模型照片与多态关联,这些关联应该包含其他模型使用的照片,例如发布和个人资料。
我试图验证:
我试图在我的Photo模型中使用以下验证码而没有成功
class Photo < ApplicationRecord
belongs_to :photoable, polymorphic: true
validates_uniqueness_of :photoable_id, scope: :photoable_type
end
我假设此验证中的范围会指示Rails仅针对每个:photoable_type拒绝重复ID,但实际发生的是Rails拒绝任何重复ID,无论该类型是否设置为&# 39;简介&#39;或者&#39;发布&#39; (例如,我只能有一个Photo with photoable_id = 1的实例,而我希望我有两个具有相同photoable_id的实例,只要一个有photoable_type ==&#39; Profile&#39;另一个是photoable_type ==& #39;发布&#39;)
您能否帮助解释如何实现这一目标以及为什么范围不会像这样起作用?离开范围可能是相同的结果:: photoable_type&#39;超出验证码。
以下其他2个型号中的代码:
发布模型
class Post < ApplicationRecord
has_one :photo, as: :photoable
end
个人资料模型
class Profile < ApplicationRecord
has_many :photos, as: :photoable
end
答案 0 :(得分:0)
我使用以下帖子中建议的代码来解决问题。 https://drill.apache.org/
在这种情况下,工作解决方案将是:
validates_uniqueness_of : photoable_id, scope: [: photoable_type, :photoable_id]