定义铁轨协议

时间:2016-09-14 19:31:10

标签: ruby-on-rails

我正在构建数据库架构。我也看过this guide 所以我会有以下模型:

作者

name, has_many:questions, has_many:comments, has_many:edits

问题

title, body , author_id, has_many:comments, belongs_to:author

注释

body, question_id, author_id, belongs_to:question, has_many:edits, belongs_to:author

修改

body, comment_id, author_id, belongs_to:comment, belongs_to:author

如您所见,问题可以有很多评论,每条评论都可以有很多编辑。作者可以有很多问题,编辑和评论

主要问题是:我是否正确使用了has_manybelongs_to分析?

其他信息: 我不知道它是否相关,但我想使用以下脚手架迁移:

rails generate scaffold Question title:string body:text author_id:integer has_many:comments belongs_to:author

rails generate scaffold Comment body:text question_id:integer author_id:integer belongs_to:question has_many:edits belongs_to:author

rails generate scaffold Edit body:text comment_id:integer author_id:integer belongs_to:comment belongs_to:author

rails generate scaffold Author name:string has_many:questions has_many:comments has_many:edits

UPD:我的脚手架不正确。我应该使用这样的东西:

rails generate scaffold问题标题:string body:text user:references rails生成脚手架评论正文:文本用户:引用问题:引用
rails生成脚手架编辑正文:文本用户:引用问题:参考

As suggested here

1 个答案:

答案 0 :(得分:0)

你的协会和脚手架都是正确的。我建议在所有belongs_to关联之后使用 dependent :: destroy ,所以当例如删除作者时,他的所有问题都会从你的数据库中删除。

例如:

Class Question < ActiveRecord::Base
 belongs_to :author, dependent: :destroy
end

这样你就可以避免数据库中出现大问题。