【发布时间】:2013-04-04 01:12:07
【问题描述】:
第一次使用 ruby on rails,我有一个包含以下 3 个模型的应用程序:
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 的单独表,其中每个父级的单个评论输入两次?
谢谢!
【问题讨论】:
-
你能描述一下你想要多态的关系吗?您是要在想法和用户上都支持 cmets,还是仅在用户上支持 cmets?是否存在用户的潜在子类?
-
我希望在用户和创意上都支持 cmets。我希望评论是多态的。我认为没有子类
-
您确定多态性确实是您要寻找的吗?如果您希望 cmets 保留在想法或用户上,您将使用多态性,也就是说,它将具有父用户或想法,但只有两者之一。这是您想要的,还是您实际上想要评论属于用户(留下它)和想法(被评论的想法)。如果是这种情况,那么您不需要多态关系,只需要两个
has_many/belongs_to关系。 -
是的,您是否尝试跟踪特定用户对创意的评论?这更像是
has_many :through关系。我认为在提供解决方案之前,我们首先需要确保我们的关系结构是正确的。 -
谢谢扎伊德!完全在鼻子上用了后者。因此,考虑到这一点,我是否只需创建一个同时包含用户 ID 和创意 ID 的连接表?
标签: ruby-on-rails migration seeding