Реализовать Gmail-подобные ярлыки в приложении Rails - PullRequest
0 голосов
/ 15 декабря 2010

Это скорее вопрос разработки приложения, чем конкретный вопрос Rails.Я пытаюсь реализовать такую ​​систему, как «ярлыки» в Gmail.Поэтому я хочу, чтобы пользователь мог применять ярлык (или многие) к конкретному сообщению.Однако я также хочу, чтобы пользователь мог управлять ярлыками с помощью стандартного Rails CRUD.

Допустим, у меня есть модель под названием Post.Таким образом, пользователь имеет много сообщений.Пользователь может создавать ярлыки, которые являются отдельной моделью от сообщений, но они также могут применяться к сообщениям с использованием флажков в представлениях Новое / редактировать сообщения.Если пользователь удаляет определенную метку, он просто удаляется из представления «Пост» и никак не влияет на сообщение.

Эта ситуация показывает мое отсутствие знаний о связях с БД, но так ли этодля отношений has_many_and_belongs_to_many?

Если это так, будет ли следующий дизайн способом реализации этого?

  • Пользователь has_many сообщений
  • Пользователь has_many Ярлыки
  • Сообщение has_many_and_belongs_to_many Ярлыки
  • Ярлык has_many_and_belongs_to_many Посты

Может быть, я слишком обдумываю это, и моя логика далека от реальности.

Ответы [ 3 ]

1 голос
/ 15 декабря 2010

Вы должны решить, хотите ли вы, чтобы теги «принадлежали» людям или просто «использовались» людьми. В gmail мои ярлыки очень специфичны для меня. В SO теги не являются специфическими для меня, хотя я могу их создать.

Если вы хотите использовать метки вместо тегов, тогда да.

User  ---< Label
Label >--< Post
User  ---< Post

Вы можете определить их на английском языке, если хотите.

A user has zero, one or more Labels
A Label is used by one and only one user
A user has  zero, one or more posts
A post is created by one and only one user
A post has  zero, one or more labels
a label is applied to  zero, one or more posts

Я бы не сказал, что вы переосмыслили эту КОНЦЕПТУАЛЬНУЮ модель данных.

1 голос
/ 15 декабря 2010

По вашему вопросу кажется, что вы пытаетесь создать систему таксономии (то есть модель тегирования). Возможно, вы захотите проверить Acts As Taggable On как возможное решение (или просто интересный справочник по моделированию) для вашей проблемы.

0 голосов
/ 15 декабря 2010

Похоже, вы могли бы реализовать эту функцию с помощью тегов. Проверьте этот пост для списка плагинов тегов и драгоценных камней для рельсов.

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