Если вы хотите, чтобы один подписчик подписывался на несколько тегов, вам необходимо иметь отношение has_and_belongs_to_many
между подписчиками и тегами.
Для этого вам необходимо создать так называемую таблицу соединений:
create_table :subscribers_tags, :id => false do |t|
t.references :subscriber, :tag
end
Это создаст таблицу без столбца id
, но с subscriber_id
и tag_id
.Затем вы указываете отношение:
class Subscriber < ActiveRecord::Base
has_and_belongs_to_many :tags
end
class Tag < ActiveRecord::Base
has_and_belongs_to_many :subscribers
end
Затем вы можете получить доступ и управлять отношением в вашем коде:
Subscriber.first.tags # => [<Tag>, <Tag>, ...]
Tag.first.subscribers # => [<Subscriber>, ...]
Subscriber.find(123).tags << Tag.find(321)
Tag.find(321).subscribers << Subscriber.new(...)
Полный список методов, которые вы можете выполнить для связейсмотрите этот раздел документации Rails .