Лучшая практика о пустом принадлежит Ассоциации
представьте себе следующую ситуацию:
у меня есть dog
модель house
модель. Собака может принадлежать дому, а в доме может быть много собак, поэтому:
Class Dog < ActiveRecord::Base
belongs_to :house
end
Class House < ActiveRecord::Base
has_many :dogs
end
теперь представьте, что я также хочу создать собак, у которых нет дома. Они не принадлежат хаусу. Могу ли я использовать эту структуру отношений и просто не сообщить :house_id
при ее создании?
есть ли лучшая практика?
Obs. Я использовал эту аналогию, чтобы упростить мою проблема, но моя реальная ситуация такова: у меня есть модель, которую пользователь может генерировать экземпляры. Он также может создавать коллекции этих экземпляров, но он может оставить экземпляр за пределами коллекции.
2 ответа:
Я думаю, что это абсолютно нормальный подход.
Вы можете просто оставить
house_id
сnull
значение в базе данных для моделей, которые не относятся к другим.
будьте осторожны с этим в Rails 5 ...
belongs_to требуется по умолчанию
теперь каждое приложение Rails будет иметь новую конфигурацию вариант конфигурации.активная запись.belongs_to_required_by_default = true, it вызовет ошибку проверки при попытке сохранить модель, где ассоциации belongs_to нет.
config.активная запись.belongs_to_required_by_default может быть изменен на ложь и с этим держать поведение старых рельсов или мы можем отключить это проверка на каждом определении belongs_to, просто передавая дополнительный опция необязательно: true следующим образом:
class Book < ActiveRecord::Base belongs_to :author, optional: true end