我正在研究Ruby on Rails podcast捕獲器,我無法弄清楚如何爲每個用戶情節模型建模。如何在Ruby on Rails應用程序中爲每個用戶狀態建模
我想有包括約一集的信息,以及用戶是否已經播放的劇集或者他們有什麼評價它的模型。
表是這樣的:
episodes_1
id | user_id | podcast_id | title | audio_url | duration| is_played | rating
如果許多用戶都訂閱相同播客會有多條記錄與同 標題和audio_url,所以我想另一個表表示:
episodes_2
id | podcast_id | title | audio_url | duration
user_episode_data
id | user_id | episode_id | is_played | rating
如果用episodes_2
上user_episode_data.episode_id = episode_2.id
你會在episodes_1
第二種選擇似乎是更好的方式來存儲數據,但第一種似乎是一種更好的呈現數據的方式。
是否可以使用多個表來存儲模型?
class Podcast < AcitiveRecord::Base
has_many :episodes
end
class Episode < ActiveRecord::Base
belongs_to :podcast
has_many :user_episode_datas
end
class Subscription < ActiveRecord::Base
belongs_to :user
belongs_to :podcast
end
class User < ActiveRecord::Base
has_may :subscriptions
has_may :podcasts, through: :subscriptions
has_may :episodes, through :podcasts
has_many :user_episode_datas
end
class UserEpisodeData < ActiveRecord::Base
belongs_to :user
belongs_to :episode
end
我想user.episodes
返回每個播客所有情節他們所訂閱的集合,我想user.episodes.first.is_played
返回true,如果該用戶曾扮演的小插曲,但情節模型沒有按」牛逼屬於任何用戶,所以我不知道如何將一個模型在軌
你已經完全改變了你的問題的性質,通過插入一個interceding'Subscription'模型。這對於那些試圖幫助的人來說至少可以說是令人沮喪的。在未來,你可能會(並幫助獲得更好的答案)更先期滿足這些類型的要求。 – zeantsoi
我不認爲添加訂閱模式改變了我原來的意思,或者我的問題的性質,但它確實使我的問題更加清晰。我意識到我沒有很好地表達我的自我。 – everett1992
你原來的問題並沒有引用'Subscription'模型是一個單一的時間 - 是的,它確實會改變問題,因爲現在有兩個中介,而不是一個。因此,模型之間的關係需要完全重新繪製。無論如何,我只是在提出一個建議。沒有必要再重複這一點。 – zeantsoi