Model/Association 为新 Rails 应用程序设计

Model/Association Design For New Rails Application

我即将开始在 Rails 中构建一个应用程序(刚开始学习 Rails,所以认为这将是一个很好的基础练习)并希望就如何构建我的模型和关联。该应用程序旨在主持一个 "game",用户可以在其中猜测他们认为在给定的音乐会上将播放什么歌曲,每场演出都是乐队演奏的。到目前为止,我有以下模型(具有近似属性):

UserSubmission 之间的关系非常简单:

class User < ActiveRecord::Base
  has_many :submissions
end

class Submission < ActiveRecord::Base
  belongs_to :user
end

但是说到其他部分之间的关​​系,事情变得有点不清楚,所以我有以下问题:

第一步,像现实生活一样设计您的应用程序。当你有更多的经验时,你可以放弃一些模型,模拟其他的进行一些优化。

在现实生活中,如何设计节目?这是一个乐队在演奏歌曲。如何设计乐队?这是一群人(这里没有使用)有歌曲。如何设计提交?这是用户认为一次播放一首歌。

那么,你可以拥有这些模型:

User (name...)
Song (name, band_id) : belongs_to a band and have many show_songs
Band (name) : has_many songs and has_many shows
Show (band_id) : belongs_to band
ShowSong (show_id, song_id, datetime) : belongs_to show and song
Submission (user_id, song_id, show_song_id) : belongs_to song and show_song

不是唯一的解决方案,你可以设计你想要的。

我根据一些 Rails 实践设计了这些模型:

  • 不要使用 date_of_show 作为键,使用 _id(这就是我插入 show_song 的原因)
  • 当模型有特定方法或必须在数据库中注册时,必须有一个模型
  • 不要使用 guess_1、guess_2、...使用 have_many 猜测