【问题标题】:ruby on rails seed .yml file which has models with associations in itruby on rails 种子 .yml 文件,其中包含带有关联的模型
【发布时间】:2023-03-23 03:54:01
【问题描述】:

我真的不明白如何为其中包含多个数据模型的 .yml 文件播种,而且它们是相互关联的。

这就是我所拥有的:

项目.rb

class Project < ActiveRecord::Base
  has_many :todos
end

tod​​o.rb

class Todo < ActiveRecord::Base

  belongs_to :project

end

我的数据架构:

  create_table "projects", force: :cascade do |t|
    t.string   "title"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "todos", force: :cascade do |t|
    t.string   "text"
    t.boolean  "isCompleted"
    t.integer  "project_id"
    t.datetime "created_at",  null: false
    t.datetime "updated_at",  null: false
  end

seeds.rb(ofc 不起作用)

seed_file = File.join(Rails.root, 'db', 'seeds/seeds.yml')
config = YAML::load_file(seed_file)
Project.create(config["projects"])

种子/seeds.yml

projects:
 - title: 'family'
   todos:
    - text: 'Get some milk'
      isCompleted: false
    - text: 'Cook some bacon'
      isCompleted: true
    - text: 'Repair the front door'
      isCompleted: false
 - title: 'work'
   todos:
    - text: 'Call my boss'
      isCompleted: true
    - text: 'Finish my work tasks'
      isCompleted: true
    - text: 'Get fired'
      isCompleted: false
 - title: 'therest'
   todos:
    - text: 'Do something'
      isCompleted: false
    - text: 'Ask a question on stackoverflow'
      isCompleted: false

谁能告诉我,我该怎么做才能使其正常工作。我需要使用我的seeds.yml 中的这种数据,我知道如何为projectstodos 制作两个不同的.yml 文件并使它们工作,但这不是我想要解决问题的方式.

【问题讨论】:

    标签: ruby-on-rails ruby database yaml seed


    【解决方案1】:

    帮自己一个忙,删除种子.yml 文件并在种子.rb 中创建所有内容

    【讨论】:

    • 如你所愿,做到了! :) 但它有任何意义吗?如果我有很多 .yml 文件怎么办,将它们全部放在一个文件夹中不是更好吗?)看起来更好。
    • 是的,在这种情况下 yml 文件是有意义的,但最后你会有很多哈希值来做“Model.create”的事情,你可以直接在 seed.rb 中写入这些哈希值。顺便说一句,不要使用夹具进行测试,而是使用 FactoryGirl。
    【解决方案2】:

    您似乎需要将模型分成单独的夹具文件。虽然它说通过 YML 和 seed.rb 工作流程设置关系有一些最低限度的支持:

    http://guides.rubyonrails.org/testing.html#the-low-down-on-fixtures

    除非这是必须遵循的业务需求,否则我会推荐其他路线来为您的数据库播种。如果您回答可以提供更多帮助:

    • 您是否已经有了要提供给 db 的数据?
    • 您的目标是播种测试/开发/或生产数据库吗?

    【讨论】:

    • 这是一个业务需求,正如我所说,我已经使用了另一种方法来使一切正常工作,但是如何使这个工作正常呢? :D 谢谢你的回答顺便说一句。我的目标只是播种该文件,了解它是如何工作的。
    • 是的,所以多模型 .yml 种子文件看起来不受支持。我建议您只使用 ruby​​ 来加载和播种您需要的静态数据。前任。 xyzpub.com/en/ruby-on-rails/3.2/seed_rb.html - 抱歉,在不了解更多 biz req 的情况下,我只能提供帮助。 - 最好的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 2021-09-23
    相关资源
    最近更新 更多