2013-04-04 60 views
1

第一次來Ruby on Rails的工作,我有以下3種型號的應用程序:設立了關於Ruby協會數據庫on Rails的

class User < ActiveRecord::Base 
    attr_accessible :username, :name, :email, :password 
    has_many :comments 
    has_many :ideas, :inverse_of => :user 
end 

class Idea < ActiveRecord::Base 
    attr_accessible :title, :description, :rank, :user_id, :status, :privacy, :created_on, :updated_on 
    belongs_to :user, :inverse_of => :ideas 
    has_many :comments 
end 

class Comment < ActiveRecord::Base 
    attr_accessible :text, :rank, :user_id, :idea_id, :created_on 
    belongs_to :user 
    belongs_to :idea 
end 

我有像創建評論表:

create_table :comments do |t| 
    t.string :comment_id 
    t.string :text 
    t.string :rank 
    t.timestamps 
end 

我想爲這些種子。我想了解的是,如何將帶有父想法和父用戶的單個註釋存儲在數據庫中,因爲列一次只能容納一個父項。我是否應該創建一個包含comment_id,user_id和idea_type的單獨表格,其中爲每個父代輸入兩次單個評論?

謝謝!

+0

你能描述你想要多態的關係嗎?您是否試圖在意見和用戶上支持意見,或僅在用戶上提供意見?有沒有可能的子類的用戶? – 2013-04-04 01:28:04

+0

我想要支持用戶和意見的評論。我想評論是多態的。我不認爲有子類 – BooBailey 2013-04-04 01:32:55

+1

你確定多態性實際上是你在找什麼嗎?如果您想讓意見留在想法或用戶身上,那麼您會使用多態性,也就是說,它可能有父級用戶或想法,但只有其中一個。這就是你想要的,或者你真的想要一個屬於一個用戶(誰離開它)的評論,以及一個想法(被評論的想法)。如果是這樣的話,那麼你不需要多態關係,只需要兩個'has_many' /'belongs_to'關係。 – 2013-04-04 01:34:58

回答

1

這聽起來像你正在試圖實現評論作爲一個聯接模型,它表明一個特定的用戶對意見的評論。如果是這樣,你應該能夠做到如下:

class User < ActiveRecord::Base 
    attr_accessible :username, :name, :email, :password 
    has_many :comments 
    has_many :commented_ideas, :class_name => 'Idea', :through => :comments, :source => :comment 
end 

class Idea < ActiveRecord::Base 
    attr_accessible :title, :description, :rank, :user_id, :status, :privacy, :created_on, :updated_on 
    belongs_to :user # the user who created the Idea 
    has_many :comments 
    has_many :commented_users, :class_name => 'User', :through => :comments, :source => :user 
end 

class Comment < ActiveRecord::Base 
    attr_accessible :text, :rank, :user_id, :idea_id, :created_on 
    belongs_to :user 
    belongs_to :idea 
end 

create_table :comments do |t| 
    t.string :text 
    t.string :rank 
    t.integer :user_id 
    t.integer :idea_id 
    t.timestamps 
end 
+0

謝謝斯圖爾特。我有一個關於擴展這個問題。作爲在評論用戶的基礎上創建想法的用戶,是否可以在Idea模型中添加belongs_to:user? – BooBailey 2013-04-04 01:47:22

+1

絕對是,更新了我的答案。 – 2013-04-04 01:49:07

+0

謝謝!那麼,從理論上講,我可以繼續擴大協會,以描述任何情況? – BooBailey 2013-04-04 01:51:33