Лучшая практика о пустом принадлежит Ассоциации


представьте себе следующую ситуацию:

у меня есть dog модель house модель. Собака может принадлежать дому, а в доме может быть много собак, поэтому:

Class Dog <  ActiveRecord::Base
  belongs_to :house
end

Class House < ActiveRecord::Base
  has_many :dogs
end

теперь представьте, что я также хочу создать собак, у которых нет дома. Они не принадлежат хаусу. Могу ли я использовать эту структуру отношений и просто не сообщить :house_id при ее создании?

есть ли лучшая практика?

Obs. Я использовал эту аналогию, чтобы упростить мою проблема, но моя реальная ситуация такова: у меня есть модель, которую пользователь может генерировать экземпляры. Он также может создавать коллекции этих экземпляров, но он может оставить экземпляр за пределами коллекции.

2 55

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

от:http://blog.michelada.io/whats-new-in-rails-5