Должны ли темы и сообщения быть одной и той же моделью в веб-приложении? - PullRequest
0 голосов
/ 21 февраля 2011

Я создаю новое форумное веб-приложение в rails.

Должна ли тема и сообщение быть одной и той же или другой моделью?

Каковы преимущества и недостатки каждого варианта? когда это должна быть одна и та же модель, и когда я должен разделить их?

Тема - имеет заголовок и тело. имеет много сообщений.

Пост - имеет только тело, посты организованы в виде дерева (actions_as_tree)

Редактировать: за них обоих можно голосовать, помечается только тема

Ответы [ 2 ]

1 голос
/ 21 февраля 2011

Тот факт, что сообщения и потоки имеют тело, недостаточно для того, чтобы сделать их одной моделью.Они достаточно различны, чтобы быть разными моделями, особенно когда у вас четкие отношения «один ко многим».

Вы, вероятно, хотите прочитать о ассоциациях , в частности has_many (который включает в себя has_many: through), has_and_belongs_to_many и bound_to .

В этом случае заставьте has_many темы обращаться к Post.Я предполагаю, что сообщение может быть только в одной теме.Если это так, то вы хотите, чтобы сообщение Post_to ссылается на тему.

0 голосов
/ 03 февраля 2016

Я бы предположил, что вы можете пройти оба пути (1) к сообщениям (N) путь И модель только для сообщений.

Если для обоих хранятся одинаковые данные, я не понимаю, почему вы НЕ МОЖЕТЕ смоделировать все как одну таблицу. Вот как это сделать:

CREATE TABLE posts
(
  post_id serial,
  post_thread_id int,
  post_number int,
  post_title character varying,
  ...
  PRIMARY KEY(post_id)
);
INSERT INTO posts(post_thread_id, post_number, post_title) VALUES (1, 1, 'Welcome to my thread!');
INSERT INTO posts(post_thread_id, post_number, post_title) VALUES (1, 2, 'The first response!');
INSERT INTO posts(post_thread_id, post_number, post_title) VALUES (1, 3, 'The second response!');

Очевидно, что в такой конструкции есть некоторые нежелательные фрагменты, но ... это можно сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...