在我目前正在研究的项目中,我注意到如果我有一个has_one
和一个has_many
引用相同类型的对象,则Rails可以区分在后续控制台会话中被引用为has_one
的对象和被引用为has_many
的对象。Rails如何沿同一类型的has_many关系保持has_one关系
例如,采取以下两种模式:
class Foo
has_many :bars
has_one :bar
end
class Bar
belongs_to :foo
end
如果我创建Foo
类型的新纪录,一组Bar
实例和一个独立的Bar
实例在Foo#bar
属性,然后重新启动控制台我发现原始Foo
实例仍参考单独的Bar
实例作为bar
。该单独的实例现在出现在由Foo#bars
返回的Bar
实例列表中。这是正常的行为还是有点侥幸?
你想通过这样做完成什么?这可能会导致'bar'关联的相当不可预知的结果,因为您不能100%确定_which_记录将从该集合返回。 –
这正是我所怀疑的,而且我已经在为我的has_one关系定义不同的列和外键了。我发现有趣的是框架似乎记得哪一个是哪个,所以我想我会请专家解释。它可能变得有用 - 你不知道你是否不问! –
我同意询问有帮助。我真诚地好奇你在努力完成什么,因为我倾向于发现这揭示了如何最好地回答这样的问题。 –