Как проверить текущую модель перед извлечением записи с отношением has_one - PullRequest
0 голосов
/ 14 мая 2019

Учитывая следующие полиморфные отношения:

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, чтобы предотвратить несоответствия.

Что является хорошей реализацией для этой проблемы?

1 Ответ

1 голос
/ 14 мая 2019

Вы можете использовать метод build_in is_a?, чтобы проверить, что представляет собой связанная запись. Таким образом, вы можете проверить, что это сад:

Note.find(1).garden.is_a? Garden

Если это правда, вы уверены, что это действительно сад.

Просто подсказка: я бы изменил имя has_one, потому что это уже предполагает, что это сад, а может быть что-то еще в полиморфных отношениях.

...