В моем приложении Rails пользователь может подписаться на других пользователей.Нужно иметь возможность получать пользовательские подписки и подписчики из пользовательского экземпляра.
Сейчас у меня есть модель User
и модель Subscription
.Subscription
- это модель соединения (присоединение User
к User
) в двустороннем самообращении has_many :through
.
Подписка:
class Subscription < ActiveRecord::Base
belongs_to :from_user, :class_name => 'User'
belongs_to :to_user, :class_name => 'User'
end
Пользователь:
class User < ActiveRecord::Base
...
has_many :subscriptions_as_subscriber, :foreign_key => 'from_user_id', :class_name => 'Subscription', :dependent => :destroy
has_many :subscriptions_as_subscription, :foreign_key => 'to_user_id', :class_name => 'Subscription', :dependent => :destroy
has_many :subscribers, :through => :subscriptions_as_subscription, :source => :from_user
has_many :subscriptions, :through => :subscriptions_as_subscriber, :source => :to_user
...
end
Первый вопрос: лучше ли мне будет обслуживаться другой установкой?
Второй вопрос: Как я могу создать контроллер (ы) для создания и уничтожения подписок и для доступа к подпискам пользователя иподписчики?
Прямо сейчас у меня есть SubscriptionsController
с create
и destroy
действиями и subscriptions
и subscribers
действиями в моих UsersController
.Тем не менее, мне интересно, если нет лучшего (более RESTful?) Способ сделать это.Доступ к подпискам и подписчикам пользователя с помощью действия index
на SubscriptionsController
, возможно?