【发布时间】:2012-01-15 09:43:16
【问题描述】:
我在以有效方式排列模型时遇到了一些问题。这些模型的东西:
City
Building
CityBuilding
WoodProduction
现在,当然,一个城市通过 city_buildings 有许多建筑物。城市建筑具有一些基本属性,例如居住在那里的人口。但是,如果我们谈论的是锯木厂,则有 2 座建筑物需要保存更多信息,例如生产的木材量。
所以,在这个例子中,锯木厂,我希望能够做类似的事情:
current_city.wood_production.amount
如果一个城市有一个 wood_production 协会,则获取木材的数量。到目前为止一切都很好。
但是,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
虽然它有效,但感觉非常不自然,我有点相信有更好的方法来实现这一点。
有什么建议吗:)?
编辑:我觉得范围可能是一个不错的解决方案的一部分,例如为锯木厂大楼指定范围,也许有人已经想到了更详细的东西,我现在正在处理这个想法。
【问题讨论】:
-
我在这里是字面意思,但肯定一座建筑只能属于一个城市......
-
哦不,建筑物是建筑物的静态表示,所以它可以属于许多城市。另一方面,city_building 确实只能属于一个特定的城市(它有很多通过)
-
这里有什么问题?您是否正在寻找从 wood_production 前往锯木厂大楼的更便捷方式?
-
要获取city_building信息,请再次阅读问题
标签: ruby-on-rails