English 中文(简体)
db 设计:一般性意见,若干类员额
原标题:db design: general comments, several types of posts

I have several tables, let s say for example: articles, thoughts and pages and I want to be able to add comments for each one of them. Should I add comments tables for each on of the table (articles_comments,pages_comments...) or somehow do general comments table for all kinds of data (plz extend how to implement that in rails if you can)

我有这样的想法,即发表载有评论的表格。

[COMMENTS] ID, MODEL, MODEL_ID, USER_ID, TEXT

while model contain the destination table(articles/posts...) and model_id the foreign id in the table, is it good solution? the problem is that I have no idea how to implement such model in rails.

I also would like to know how Facebook implemented their posts db. fb user can post any kind of data (question/status/poll/picture) and it s just fit in the feeds table with current order and comments.

最佳回答

形成一个一般的<条码>Comment模型,使之与这种模型一样多变:

class Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorphic => true
end

class Article < ActiveRecord::Base
  has_many :comments, :as => :commentable
end

class Thought < ActiveRecord::Base
  has_many :comments, :as => :commentable
end

根据<条码>第模式的事例,您可检索以下意见汇编:@article.comments

如果您有<条码>Comment模型,你可以通过<条码>@comment.commentable将其带至母。

为了开展这项工作,你需要宣布模型中一个外国关键栏和一个称为多形态界面的类别栏:

class CreateComments < ActiveRecord::Migration
  def self.up
    create_table :comments do |t|
      t.text       :content
      t.references :user
      t.references :commentable, :polymorphic => true
      t.timestamps
    end
  end

  def self.down
    drop_table :comments
  end
end
问题回答

I suspect that "articles", "thoughts" and "pages" are more alike than unalike, and perhaps should be in one table. Then this question goes away.





相关问题
what is wrong with this mysql code

$db_user="root"; $db_host="localhost"; $db_password="root"; $db_name = "fayer"; $conn = mysqli_connect($db_host,$db_user,$db_password,$db_name) or die ("couldn t connect to server"); // perform query ...

Users asking for denormalized database

I am in the early stages of developing a database-driven system and the largest part of the system revolves around an inheritance type of relationship. There is a parent entity with about 10 columns ...

Easiest way to deal with sample data in Java web apps?

I m writing a Java web app in my free time to learn more about development. I m using the Stripes framework and eventually intend to use hibernate and MySQL For the moment, whilst creating the pages ...

join across databases with nhibernate

I am trying to join two tables that reside in two different databases. Every time, I try to join I get the following error: An association from the table xxx refers to an unmapped class. If the ...

How can I know if such value exists in database? (ADO.NET)

For example, I have a table, and there is a column named Tags . I want to know if value programming exists in this column. How can I do this in ADO.NET? I did this: OleDbCommand cmd = new ...

Convert date to string upon saving a doctrine record

I m trying to migrate one of my PHP projects to Doctrine. I ve never used it before so there are a few things I don t understand. In my current code, I have a class similar to this: class ...

热门标签