0

我該如何構建這個Rails協會?構建Rails協會

問題

所以基本上,用戶可以創建一個數據集,然後創建關閉它的圖形。我希望用戶能夠創建項目,並用多個項目標記數據集或圖形。如果數據集標有項目,則不應自動標記屬於它的所有圖(數據集)。

我是一個Rails協會noob。通過文檔閱讀,聽起來像我可以做這樣的事情。

  1. 「dataset」has_many「graphs」。
  2. 「項目」has_many「數據集」和「圖形」。
  3. 「dataset」has_many「projects」。
  4. 「graph」has_many「projects」。

解:(這是正確的嗎?)

4機型:Dataset, Graph, Project, ProjectContent

對於#1:

Dataset has_many Graphs 
Graph belongs_to Dataset 

對於#2:

Project has_many datasets, through: :project_content 
Project has_many graphs, through: :project_content 

對於#3:

Dataset has_many projects, through: project_content 

對於#4:

Graph has_many projects, through: project_content 
+0

您能否澄清一下:如果您有項目,即使您沒有標記相關數據集,您是否可以爲其標記圖形? 例如:dataset1有graph1,dataset2有graph2。 project1標記了dataset1和graph2。 – Ninigi

+0

是的@Chai :)每個項目一次分配一個項目。 –

回答

1

此大聲說出來 「多態」 對我來說,幾乎是默認的使用情況;)

標籤型號:

belongs_to :taggable, :polymorphic => true 
belongs_to :project 

項目型號:

has_many :tags 
has_many :datasets, :through => :tags, :source => :taggable, :source_type => 'Dataset' 
has_many :graphs, :through => :tags, :source => :taggable, :source_type => 'Graph' 

圖模型:

belongs_to :dataset 
has_many :tags, :dependent => :destroy 
has_many :projects, :as => :taggable 

數據集型號:

has_many :graphs 
has_many :tags, :dependent => :destroy 
has_many :projects, :as => :taggable 

如果你不想去多態模型,你的做法似乎是正確的。

+0

謝謝柴,不知道我看到什麼多態給我在我當前的模型雖然 –

+0

只有兩種標籤類型:沒有:)也許有一天一個項目將有許多不同類型的標籤... XD – Ninigi

+0

非常明智,你是。 –