Абоненты модели в рельсах - PullRequest
       4

Абоненты модели в рельсах

0 голосов
/ 28 сентября 2011

Рассмотрим модель хранения идентификаторов пользователей подписчиков в определенной ветке комментариев, например

ветка has_many подписчиков

где подписчики относятся к типу user.

Я чувствую, что создание новой таблицы для подписчиков - это излишне. В принципе, я хотел бы получить доступ к thread.subscribeers, чтобы получить список подписчиков - наверняка есть «более легкий» способ?

Я использую Rails 3 с SQLite.

Ответы [ 2 ]

2 голосов
/ 28 сентября 2011

Вы можете использовать два метода.

Варианты Один - использовать отношения habtm, такие как:

class Thread
  has_and_belongs_to_many :users
end

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

class Thread
  has_many :subscriptions
end

class Subscription
  belongs_to :thread
  belongs_to :user
end

Обычно полезная модель объединения считается лучшей практикой.

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

0 голосов
/ 28 сентября 2011

Просто сохраните это обычный атрибут в модели Thread, соответствующий столбцу в таблице threads.Назовите его subscriber_list и определите его как список подписчиков, разделенных каналом.В базе данных сделайте так: :text.

Тогда в Thread просто создайте пару аксессоров:

class Thread < ActiveRecord::Base
  def subscribers
    self.subscribers_list.split('|')
  end

  def subscribers=(arr)
    self.subscribers_list = arr.join('|')
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...