Реализация полиморфной модели рельсов - PullRequest
0 голосов
/ 14 апреля 2011

В моем проекте у меня есть модель отношений, которая позволяет пользователям следовать друг за другом.

class Relationship < ActiveRecord::Base
  attr_accessible :followed_id

  belongs_to :follower, :class_name => "User"
  belongs_to :followed, :class_name => "User"

end

Теперь я хочу, чтобы пользователи также могли посещать курсы и группы. Должен ли я начать новую модель followCourse и followGroup или сделать модель отношений полиморфной? Как я могу это сделать? Благодарю.

1 Ответ

1 голос
/ 14 апреля 2011

Я бы не использовал полиморфизм для потенциально больших таблиц. Я думаю, что лучший способ - это использовать has_and_belongs_to_many отношения для такого рода отношений.

Не забудьте создать индексы для user_id, group_id, чтобы немного ускорить процесс. Вы можете сделать это, используя add_index(:table_name,[:user_id,:group_id]).

Я бы также сделал отношение УНИКАЛЬНЫМ, что можно сделать, добавив :unique => true в конце команды add_index.

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