Модель для подписок в рельсах - PullRequest
3 голосов
/ 03 октября 2011

Итак, у меня есть немного забавная модель: Я хочу записать список пользователей, которые подписаны на определенную ветку.

На данный момент у меня есть: thread has_many: подписчики

, где

подписчики принимают в качестве параметров user_id и thread_id. Если комбинация user_id и thread_id найдена, пользователь подписывается, в противном случае это не так.

Если я хочу подписать пользователя, мне нужно вставить эту комбинацию в базу данных.

Если я хочу «отписаться» от пользователя, мне нужно удалить эту комбинацию из базы данных.

Нужно ли использовать для этого стандартную настройку ActiveRecord или мне следует изменить ее более радикально? Если бы я делал это без фреймворка, у меня был бы совместный ключ task_id и user_id, но я понятия не имею, возможно ли это в rails.

Мысли о том, как поступить?

1 Ответ

4 голосов
/ 03 октября 2011

Вы можете использовать "has_many: through" ассоциацию ActiveRecord. Вы можете найти больше информации о направляющих для активной записи .

По сути, вы делаете что-то вроде следующего в вашей модели Thread:

has_many :subscriptions
has_many :subcribers, :through => :subscriptions

А затем сделайте:

has_many :subscriptions
has_many :subscribed_threads, :through => :subscriptions

в ваших подписчиках / пользовательских моделях.

В вашей модели подписок у вас будет следующее:

has_many :threads
has_many :subscribers

Вам нужно создать таблицу и модель thread_subscribeers, чтобы все правильно подключить. Но в конце вы можете сделать myThread.thread_subscribers и получить список подписчиков в потоке или user.subscribed_threads, чтобы получить подписки пользователя.

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