给出以下多态关系:
class Note < ApplicationRecord
belongs_to :noteable, polymorphic: true
has_one :garden, foreign_key: :id, primary_key: :noteable_id
end
class Garden < ApplicationRecord
has_many :notes, as: :noteable
end
我想验证noteable_type
是Garden
来防止不匹配。
什么是解决此问题的好方法?
答案 0 :(得分:1)
您可以使用build_in is_a?
方法来检查相关记录是什么。所以基本上您可以通过以下操作来检查它是否是花园:
Note.find(1).garden.is_a? Garden
如果这是真的,那么您可以确定它确实是一个花园。
一个提示:我将更改has_one的名称,因为它已经假定它是一个花园,而它可以是多态关系中的其他东西。