将数据从固定装置加载到数据库(关联)
Loading data from fixtures to the database ( associations )
我有两个模型,Project 和 Todo。
项目存储了一组待办事项。
项目迁移:
def up
create_table :projects do |t|
t.string :title, null: false
t.timestamps null: false
end
end
Todo 迁移:
def up
create_table :todos do |t|
t.string :text, null: false
t.boolean :isCompleted, null:false
t.integer :project_id, null:false
t.timestamps null: false
end
end
project.rb
class Project < ActiveRecord::Base
has_many :todos
end
todo.rb
class Todo < ActiveRecord::Base
belongs_to :project
end
projects.yml
family:
title: 'Семья'
work:
title: 'Работа'
therest:
title: 'Прочее'
todos.yml
family_todos:
text: 'Купить молоко'
isCompleted: false
project_id: family
work_todos:
text: 'Закончить проект'
isCompleted: false
project_id: work
therest_todos:
text: 'Познать бесконечность'
isCompleted: true
project_id: therest
如何正确连接它们,以便在调用项目时可以看到其中的所有待办事项?另外我很好奇如何通过 yml 文件像数组一样添加日期?
如果你想预填充你的数据库,那么更好的方法是使用 seeds.rb
,它位于 db/
.
只需在此处使用 ruby 并在您的 rails 应用程序中使用 类,例如,为其创建项目和待办事项:
project = Project.create!(...)
project.todos.create!(...)
然后直接运行rake db:seed
执行即可。
您可以在此处通过示例阅读更多内容:http://www.xyzpub.com/en/ruby-on-rails/3.2/seed_rb.html
link table 之间关联的更好方法之一是使用引用。您可以对您的待办事项执行此操作 table
def up
create_table :todos do |t|
t.string :text, null: false
t.boolean :isCompleted, null:false
t.references :project, references: :projects, index: true, foreign_key: true
t.timestamps null: false
end
end
这将在您的待办事项 table 中创建一个名为 project_id 的字段。因此,您有一个项目 table,待办事项 has_many。
您可以通过多种方式预加载数据库。您可以使用 seeds.rb 文件,您可以在其中编写代码以从 yml 文件读取并加载到数据库。
你可以这样做
proj = Project.create(title: family)
如果你有一个包含所有家庭待办事项的数组,那么你可以像这样将它放入数据库
##Family todos
loop through
proj.todos << Todo.create(...fields...)
end
我有两个模型,Project 和 Todo。
项目存储了一组待办事项。
项目迁移:
def up
create_table :projects do |t|
t.string :title, null: false
t.timestamps null: false
end
end
Todo 迁移:
def up
create_table :todos do |t|
t.string :text, null: false
t.boolean :isCompleted, null:false
t.integer :project_id, null:false
t.timestamps null: false
end
end
project.rb
class Project < ActiveRecord::Base
has_many :todos
end
todo.rb
class Todo < ActiveRecord::Base
belongs_to :project
end
projects.yml
family:
title: 'Семья'
work:
title: 'Работа'
therest:
title: 'Прочее'
todos.yml
family_todos:
text: 'Купить молоко'
isCompleted: false
project_id: family
work_todos:
text: 'Закончить проект'
isCompleted: false
project_id: work
therest_todos:
text: 'Познать бесконечность'
isCompleted: true
project_id: therest
如何正确连接它们,以便在调用项目时可以看到其中的所有待办事项?另外我很好奇如何通过 yml 文件像数组一样添加日期?
如果你想预填充你的数据库,那么更好的方法是使用 seeds.rb
,它位于 db/
.
只需在此处使用 ruby 并在您的 rails 应用程序中使用 类,例如,为其创建项目和待办事项:
project = Project.create!(...)
project.todos.create!(...)
然后直接运行rake db:seed
执行即可。
您可以在此处通过示例阅读更多内容:http://www.xyzpub.com/en/ruby-on-rails/3.2/seed_rb.html
link table 之间关联的更好方法之一是使用引用。您可以对您的待办事项执行此操作 table
def up
create_table :todos do |t|
t.string :text, null: false
t.boolean :isCompleted, null:false
t.references :project, references: :projects, index: true, foreign_key: true
t.timestamps null: false
end
end
这将在您的待办事项 table 中创建一个名为 project_id 的字段。因此,您有一个项目 table,待办事项 has_many。
您可以通过多种方式预加载数据库。您可以使用 seeds.rb 文件,您可以在其中编写代码以从 yml 文件读取并加载到数据库。 你可以这样做
proj = Project.create(title: family)
如果你有一个包含所有家庭待办事项的数组,那么你可以像这样将它放入数据库
##Family todos
loop through
proj.todos << Todo.create(...fields...)
end