У меня возникли проблемы с эффективным размещением моих моделей.Вещи из этих моделей:
City
Building
CityBuilding
WoodProduction
Теперь, конечно, в городе есть много зданий через city_buildings.У городского здания есть некоторые основные признаки как население, живущее там.Тем не менее, есть 2 здания, в которых нужно хранить больше информации, например, о количестве произведенной древесины, если мы говорим о лесопилке.
Итак, в этом примере на лесопилке я бы хотел иметь возможностьсделайте что-то вроде:
current_city.wood_production.amount
и получите количество древесины при условии, что в городе есть одна ассоциация wood_production.До этого момента все было в порядке.
Но для производства древесины также необходимо хранить данные о скорости производства древесины.Этот показатель рассчитывается по формуле, которая требует информации об уровне здания лесопилки (находится в city_buildings).
Я сделал это, используя вложенную ассоциацию в wood_production, например:
has_many :city_buildings, :through => :city
Итак, теперь я могу выполнить что-то вроде:
c = City.first
w = c.wood_production
w.city_buildings.where(:building_id => ...).level
Что хотя и работает, если чувствует себя очень неестественно, и я вроде как убежден, что есть гораздо лучший способ добиться этого.
Что-нибудь предложить, пожалуйста :)?
РЕДАКТИРОВАТЬ: Я чувствую, что сфера может быть частью хорошего решения, например, указание области для строительства лесопилки, может быть, кто-то придумал что-то более подробно,Сейчас я как бы обрабатываю эту идею.