【发布时间】:2012-02-22 03:38:40
【问题描述】:
我是 Rails 的新手,上个月左右才开始学习。我有一个关于建立模型关联的问题。我有点碰到了一个地方,我认为我需要回去对我已经做过的事情进行更改。这是场景。
我正在为乐队创建一个应用程序来列出即将发生的事件。
有几个重要的因素
- 有多个乐队列表事件
- 每个乐队都有独特的活动,但也会与其他一些乐队共享一些活动(即当使用此系统的两个乐队一起在同一个场地演出时)
- 关于每个活动的某些信息对于参加活动的所有乐队都是通用的(即地点、日期、时间、城市、州等)
- 每个活动都有特定于一个乐队的特定信息(即特定的 VIP 购票 URL、他们自己对活动的描述等)
目前是这样设置的:
class Event < ActiveRecord::Base
belongs_to :venue
scope :upcoming, where('date >= ?', Date.today)
end
class Venue < ActiveRecord::Base
has_many :events
accepts_nested_attributes_for :events
end
我还没有真正对艺术家模型做太多事情,因为我只是专注于将事件输入系统并正确列出 1 位硬编码的艺术家。
基本上现在它的工作原理是用户转到创建活动表单,他们选择日期,下一行是场地名称。场地名称表单使用数据库中的场地名称 + 城市自动完成。如果用户在系统中已经存在的地点创建事件,它实质上是通过地点模型将事件信息保存为嵌套属性。如果场地不在系统中,则会出现额外的位置数据输入字段,然后创建一个新场地并与该活动相关联。
当我开始考虑让艺术家共享事件并维护仅针对该艺术家的事件的特定细节时,它开始变得有点棘手。我可以将每个事件视为一个单独的事件,这很容易,但是我不确定我怎么能说这个艺术家在这个日期与这些艺术家一起表演,除了艺术家将这些名字直接输入到 1 字段中。然后我也失去了 ActiveRecords 的很多魔力,关于哪些艺术家与哪些其他艺术家在哪里表演等等。
到目前为止,只有 1 个活动模型,但我认为最好保留 1 个中心模型,仅用于多个乐队(如场地、城市、州等)不共享的活动基础知识,以及然后将这些链接到辅助 event_details 模型以获取特定于乐队的信息。
您是否会建议多个模型,或者我是否有更好的方法将演奏多个活动的乐队联系在一起,而不是创建一个活动详细信息模型链接回多个艺术家共享的 1 个主要活动?我是否应该在事件表上创建某种类型的唯一事件标识符,以便将具有不同 ID 的事件视为另一个乐队正在播放的同一事件?我看到的唯一问题是,我将在我的数据库中的很多数据上加倍......我基本上希望能够在查看事件数据的同时说艺术家正在播放的这个日期这场演出,在这个场地,与这些其他乐队一起,而不必简单地创建一个“other_artists”列,乐队会在其中简单地列出与他们一起表演的艺术家。
对不起,我希望这是有道理的...提前感谢您的任何建议!
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 associations model-associations