工厂女孩 - 理解协会

时间:2011-06-25 02:19:36

标签: ruby ruby-on-rails-3 factory-bot

我没有找到association方法的功能以及如何正确使用它的明确解释 - 我看到几个模型Alpha has_many Beta的例子,然后在使用工厂创建新的Beta时我们说beta.association :alpha或类似的东西。但不是Alpha也与Beta(Beta belongs_to Alpha)有关......所以我只是很困惑。我认为一个关联(至少在普通英语中)通常是相互的,所以我不明白这个方法应该做什么。有人可以澄清一下吗?

除了在广泛的概念层面上理解它之外,我还想确切地知道它在语法层面上的作用(即,它是否添加像attr_accessor那样的方法?就像这实际上在做什么?)

对不起,我还没有找到明确的解释 - 如果有人能向我解释这将是伟大的!!

1 个答案:

答案 0 :(得分:1)

根据我的经验,当您需要在按工厂创建其他对象时实例化关联对象时,在FactoryGirl中定义“关联”,如果没有此关联,则新对象将无效。

假设您有公司和工作人员模型,并且在您的应用程序中,您有验证可以阻止创建具有无效company_id属性的Worker。您可以让公司没有工人(这就是为什么您不应该为工厂中的工人定义关联),但是您不能没有公司的工人。然后,您将工厂中的关联添加到每个创建的工作程序的lazy-instantiate Company。

总而言之 - 您在模型中拥有belongs_to时以及模型中的关联也具有在线验证时定义关联。