我已经阅读了在 Rails 网站上的选择has_many :through
has_and_belongs_to_many
,但是我有点困惑,因为我的案例与网站上给出的案例不同。
我有两个模型:Prop
和CharacterCostume
,并且角色的服装可以有多个与之关联的道具,但是道具不属于该角色,并且它也可以被场景中的任意数量的角色使用。
现在我has_and_belongs_to_many :props
在我的CharacterCostume
模型里面,它完全符合我的要求:它使用character_costumes_props
我调用时命名的表来获取与服装相关的所有道具CharacterCostume#props
然而,由于“属于许多人”的部分,协会名称让我望而却步。服装不属于任何道具,所以模型has_and_belongs_to_many :character_costumes
内部没有Prop
。
我知道没有它它都可以正常工作,但它让我想到也许我应该使用has_many :through
关联,但这需要我创建一个多余的模型(这是多余的,对吧?),模型看起来像这样:
class CharacterCostumeProp < ActiveRecord::Base
belongs_to :character_costume
has_one :prop
end
另外,has_one
不是在belongs_to
这里工作吗?
我希望代码尽可能语义化,但我不确定这是否会增加对资源的需求或以某种方式降低性能,因为有一个中间模型。
这两种方法是否有某些怪癖/好处?我的够好吗?还是我的想法与我需要做的完全错误?
谢谢!