首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby on Rails: seeds.rb和编号

Ruby on Rails: seeds.rb和编号
EN

Stack Overflow用户
提问于 2014-07-25 03:45:05
回答 1查看 98关注 0票数 0

我和一些同学联合起来,为期末项目制作了一个谋杀悬疑游戏。这就像一个“选择你自己的冒险”的游戏。一旦读者阅读了故事情节的一部分,他们就会看到关于下一步应该做什么的多项选择题。根据他们的反应,这将导致下一个适当的场景。

我们的故事情节存储在一个名为Scene的模型中。如果他们在场景2.3,他们选择答案1,这将把他们带到场景3.1,依此类推。我们有parent_scene_id,也有child_scene_id。因此,场景2.3是parent_scene_id,一旦他们选择了一个响应,就是现在的child_scene_id,它将他们带到新的场景,又一次是parent_scene_id。这个故事被分成了几个分支。例如,一个场景可能会让他们偏离收集证据的主要故事情节。

例如:场景2(主分支),他们选择第一个选项(现在是场景2.1)。如果他们选择场景2.1中的第二个选项,这将把他们带到称为场景2.12的第三分支。一旦完成此操作,它们将被带回主分支。

我们被指示使用seeds.rb文件将适当的编号添加到场景中。指向这些场景的URL也将具有相同的编号系统。我们必须把这一切联系在一起。

在这方面我们真的被难住了,我们希望能得到一些帮助。如果需要进一步澄清,请让我知道,我会尽我所能。非常感谢你们。

EN

回答 1

Stack Overflow用户

发布于 2014-07-25 04:40:43

我不能给你一个例子,让你看到更多关于你的模型的细节。听起来您有一个用于自引用的HABTM连接表,所以,如果我理解正确的话,它是:

代码语言:javascript
复制
class Scene < ActiveRecord::Base
  has_and_belongs_to_many :parent_scenes, 
    :class_name => :Scene, 
    :join_table => :habtm_scenes, 
    :foreign_key => :child_scene_id, 
    :association_foreign_key => :parent_scene_id

  has_and_belongs_to_many :child_scenes, 
    :class_name => :Scene, 
    :join_table => :habtm_scenes, 
    :foreign_key => :parent_scene_id, 
    :association_foreign_key => :child_scene_id
end

并且您的迁移将具有类似以下内容:

代码语言:javascript
复制
create_table :scene do |t|
  t.integer :major_branch
  t.integer :minor_branch
  t.timestamps
end
create_table :habtm_scenes do |t|
  t.references :child_scene_id
  t.references :parent_scene_id
  t.timestamps
end

因此,为了让它成为种子,您只需要将它放入大量的create!行,然后加入关联:

db/seeds.rb

代码语言:javascript
复制
Scene.transaction do
  scene2_1 = Scene.create!(:major_branch => 2, :minor_branch => 1)
  scene2_2 = Scene.create!(:major_branch => 2, :minor_branch => 2)
  scene2_3 = Scene.create!(:major_branch => 2, :minor_branch => 3)
  scene2_1.child_scenes << scene2_2, scene2_3
end

一旦你把所有这些放在一起,只需要运行rake db:seed。我强烈建议将其包装在事务中,如上面的示例所示,这样,如果首次尝试失败,您可以返回并修复代码,因为您知道当您再次运行rake db:seed时,您是在一个干净的状态下开始。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24942663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档