【问题标题】:Rails fixtures -- how do you set foreign keys?Rails 固定装置——你如何设置外键?
【发布时间】:2010-10-05 08:13:22
【问题描述】:

我正在阅读 guide 中有关 Rails 固定装置的信息(谢谢,trevorturk)。看来您在 Yaml 文件中定义了类,它们会自动加载到 test DB 中——很酷。

但是如果你想指定这个食谱属于那本食谱(或其他什么)你怎么做呢?

您是否应该在 Yaml 代码中手动指定 cookbook.idrecipe.cookbook_id 的值? (只是一个猜测——指南没有显示类似的内容。)或者有更合适的方法吗?

【问题讨论】:

    标签: ruby-on-rails unit-testing testing tdd fixtures


    【解决方案1】:

    您应该使用命名的固定装置,它会在您不提供的地方自动为您生成一个 ID 号。这些 id 数字本质上是您使用的任何字符串的整数哈希。如果您引用命名版本,请不要添加“_id”:

    # recipes.yml
    chicken_soup:
      cookbook: my_recipes
    
    # cookbooks.yml
    my_recipes:
      title: My Test Cookbook
    

    【讨论】:

    • 哇,这比我想象的要简单得多:) 我正在尝试像client_id: <%= contacts(:dave).id %> 这样的愚蠢的东西(这显然不起作用)。
    • 如果您的 ID 与对象的名称不同(例如 my_cookbook_id),您可以像这样指定对象的类:my_cookbook: my_recipes (Cookbook)
    【解决方案2】:

    此外,如果您希望拥有多对多关联 (HABTM),您只需在夹具中为关联提供一个数组:

    # recipes.yml
    chicken_soup:
      cookbooks: [my_recipes, another_recipe]
    

    【讨论】:

      猜你喜欢
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多