我正在开发Rails应用程序并进行了一些初始迁移和关联。这是我目前拥有的架构:
现在,我不确定这个架构是否真的有效。我试图根据类别在帖子中包含不同的数据(例如,如果帖子位于"音乐"类别,它将显示记录的标题以及创建的艺术家它)。我现在的方式是,有些表格会有一个硬编码category_id
(例如products
,episodes
,records
。
答案 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 %>