我想设置一些has_many,:通过使用fixture来测试rails 3.1中的对象。
如果您查看关联的文档作为示例,我想知道如何将程序集分配给零件。我发现这样做的唯一方法是在它自己的文件中显式创建清单对象,但如果我对该模型的默认值感到满意,而我想要指定的是部件/汇编ID,那么就是直接做的方法吗?
我想要类似的东西:
my_assembly:
parts: my_first_part, my_second_part
如果您执行HABTM,则此方法有效,但如果您具有显式连接模型,则无效。
答案 0 :(得分:8)
假设您想要或必须坚持使用灯具,那么如果您从HABTM切换到has_many:through关系,那么您将无法再使用短内联列表。您必须为:through模型创建单独的fixture文件。
答案 1 :(得分:-41)
永远不要将Rails灯具用于任何事情。
我会重复:永远不要使用Rails灯具。
它们很危险,很麻烦并且会使您的测试泄漏状态。它们不适合编写适当的测试。充其量,您将获得看起来好像已正确编写但具有隐藏依赖项的测试。 Rails团队100%错误地使用了这个功能,我希望他们能够将它从Rails中删除,这样人们就不会想要使用它了。
相反,安装factory_girl_rails并使用工厂按需创建测试记录:
Factory :assembly, :parts => [Factory(:part, :name => 'first'), Factory(:part, :name => 'second')]