Rails 5 требует :belongs_to
ассоциаций для существования по умолчанию.Дополнительной проверкой, которую вы видите, является проверка того, что ваш проект все еще существует.
Если вы хотите отключить это поведение, вы можете указать, что связь необязательна:
class Projectitem
belongs_to :project, optional: true
end
Если вы собираетесь это сделать, вам, вероятно, понадобятся дополнительные средства защиты, чтобы гарантировать, что Projectitems
не может стать «осиротевшим».Например, если вы удалите Project
, вы можете также удалить все связанные элементы проекта:
class Project
has_many :projectitems, dependent: :destroy
end
В качестве альтернативы, вы можете отметить projectitems.project_id
как внешний ключ на уровне базы данных,который может обеспечить тот же уровень защиты, что и стандартная проверка Rails, но для всех клиентов (это особенно полезно, если ваше приложение Rails не единственное приложение для подключения к базе данных).
Другая альтернатива (иодин, который я лично рекомендовал бы) - оставить дефолт Rails в покое.Это может показаться непропорциональной нагрузкой на ваш сервер, когда ваши другие транзакции с базой данных очень просты, но на самом деле они очень быстрые и не слишком медленные;однако ваши обновления могут со временем расти, если вы добавите больше полей и индексов.