每个类别Rails的不同注册模型

时间:2017-11-25 20:36:45

标签: ruby-on-rails ruby sqlite ruby-on-rails-5 registration

我正在努力建立我的投资组合,我正在开发一个书籍在线商店。每个用户都可以注册他自己的书,其中书是不同的模型。我想为不同的类别(和子类别)制作多个注册表单,我不知道如何。

我是Ruby on Rails的新手,我试图谷歌,但我没有找到任何有用的东西。此外,由于我没有足够的知识,我真的不知道要搜索什么。有人能举个例子吗?我真的想弄清楚。

对我来说,一个主要问题是处理我的数据库。由于每个类别都有自己的表单,因此我的book表中应该有不同的列。与此同时,我读到列可能会对网站速度产生影响。我是否必须为每个类别创建一个表,或者我可以简单地添加许多列并将默认值设置为nil?

我发现了一些资源:

A better method of handling multistep forms in rails

Multi Model Sign-up Wizard

Creating a sign up form flow in Ruby on Rails Part 1

2 个答案:

答案 0 :(得分:2)

听起来你的第一个问题是如何设计数据库。虽然我不担心从速度角度来看有太多列(你需要有很多列和行才能成为问题),但是拥有大量的空列表明数据库设计有问题。

我建议使用包含公共字段的book表格(ID,标题,ISBN,主要作者或主要作者ID,概要,category_type)。然后,您可以拥有与书籍使用1:1关系的相关表格,例如book_engineeringbook_law

如果您有新的表单页面,则无法知道要显示的表单,因为用户尚未输入任何数据。也许您可以让他们设置常用的图书数据,当他们从下拉类别菜单中选择时,您可以呈现特定于类别的字段作为响应。提交表单时,INSERT将提交到book表以及当时确定的子类别表。

最后,要考虑的另一件事是,在根据任何细节输入之前,您是否能够了解图书类别。例如,如果您有一个链接/按钮,显示"点击此处输入法律书籍"然后,您可以使用查询字符串?category_type=4重定向到表单,并立即呈现所有字段(包括子表字段)。这实际上是UI设计的问题。可能值得考虑用户是否也允许更改类别类型,在这种情况下,您必须删除一个子表行并添加另一个。

答案 1 :(得分:1)

我真的不知道你的问题是关于关联(表之间的关系),如果看到的话:http://guides.rubyonrails.org/association_basics.html

如果更多是关于嵌套表单(要在同时创建示例中创建模型之间的关联),请参阅:http://railscasts.com/episodes/196-nested-model-form-revised

(如果你在网上搜索嵌套模型或嵌套表格指南,你可能会找到其他更好的教程)

希望能帮到你。