如何为帖子属于类别(例如音乐,动漫,产品)和博客的博客创建架构。涉及基于类别的不同表格?

时间:2016-12-08 15:43:12

标签: ruby-on-rails ruby database reactjs schema

我正在开发Rails应用程序并进行了一些初始迁移和关联。这是我目前拥有的架构:

Current Schema

现在,我不确定这个架构是否真的有效。我试图根据类别在帖子中包含不同的数据(例如,如果帖子位于"音乐"类别,它将显示记录的标题以及创建的艺术家它)。我现在的方式是,有些表格会有一个硬编码category_id(例如productsepisodesrecords

1 个答案:

答案 0 :(得分:1)

如果您尝试在帖子中包含某些音乐记录数据,则意味着您需要在两个表格之间创建关系。例如:

rails g migration add_record_references_to_posts record:references

然后rake db:migrate

模型/ post.rb:

belongs_to :record
validates :band_type, presence: true, if: 'category.id == 2'

模型/ record.rb:

has_many :posts

通过这种方式,您可以使用选择选择帖子所属的记录(不要忘记在表单中添加该记录)。 然后,您就可以从帖子中检索您的记录标题,例如在您可以执行的帖子显示页面中:

<% if @post.category.name == "Music" %>
 <%= @post.record.title %>
 <%= @post.record.name %>
<% end %>

在帖子表单中,您可以使用jquery显示或隐藏特定于帖子类别的输入。

但我认为你根本不需要类别表。根据与其他表(记录,剧集或产品)的帖子关系的存在,您将能够知道它是什么类型的帖子。例如,如果帖子(不是模型的对象)属于产品,您将知道它是产品的帖子,所以您可以这样做:

 <% if @post.record.present? %>
   <%= @post.record.title %>
   <%= @post.record.name %>
 <% end %>