【问题标题】:How to create a category and subcategory with rake db:seed如何使用 rake db:seed 创建类别和子类别
【发布时间】:2012-04-16 17:25:44
【问题描述】:

我正在尝试为我的 rails 3 应用程序播种,但遇到了问题。我的类别表有以下字段:

字符串“名称” 整数“位置” 整数“parent_id”

parent_id 是另一个类别的 id,用于nested_set。

种子.rb

Category.delete_all  
Category.create(:name => "Category 1",
              :position => 1,
              :parent_id => nil )

Category.create(:name => "Subcategory 1",
              :position => 1,
              :parent_id => 1 )

当我跑步时

rake db:seed

我得到错误:

rake aborted!
Couldn't find Category with id=1

Tasks: TOP => db:seed
(See full trace by running task with --trace)

那么,如何首先创建类别,以便 ID 1 可用?

【问题讨论】:

    标签: ruby-on-rails activerecord rake nested-sets seed


    【解决方案1】:

    您的版本的问题不在于它没有按顺序创建,而是自动增量没有重置,因此它没有被赋予 ID 1。

    试试:

    Category.delete_all
    first_category = Category.create(:name => "Category 1",
              :position => 1,
              :parent_id => nil )
    second_category = Category.create(:name => "Subcategory 1",
              :position => 1,
              :parent_id => first_category.id )
    

    【讨论】:

    • 太棒了,成功了。我可以继续像这样引用 second_category.id third_category 还是如何引用 first 之后的元素?
    • 好的,我已经考虑过了,我知道它不会自动递增。那么我需要找到ID来引用第二个或第三个元素吗?
    • @ruevaughn 只需将您正在创建的 Category.create 语句分配给一个变量,然后引用该变量的 id。我使用的变量名是任意的。
    • 哎呀,我不是说它不会自动递增我的意思是自动递增不会重置。好的,这是有道理的,非常感谢。
    • 啊,我看到 first_category.id 是在 first_category = Category.create 中定义的。感谢您澄清这一点。
    【解决方案2】:
    Category.delete_all  
    parent = Category.create(:name => "Category 1",
                  :position => 1,
                  :parent_id => nil )
    
    Category.create(:name => "Subcategory 1",
                  :position => 1,
                  :parent => parent )
    

    【讨论】:

    • 我试过这个答案,它也可以。谢谢。我选择了另一个答案,因为它有更多的描述。
    【解决方案3】:

    只需使用:parent_id => Company.first 而不是:parent_id => 1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-26
      • 1970-01-01
      • 2014-11-07
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多