In meiner Rails-App kann ein Benutzer andere Benutzer abonnieren. Man sollte in der Lage sein, die Abonnements und Abonnenten eines Benutzers aus einer Benutzerinstanz zu erhalten.
Im Moment habe ich eine User
Modell und ein Subscription
Modell. Subscription
ist das Verbindungsmodell (Verbindung User
à User
) in einem zweiseitigen selbstreferentiellen has_many :through
Beziehung.
Abonnement:
class Subscription < ActiveRecord::Base
belongs_to :from_user, :class_name => 'User'
belongs_to :to_user, :class_name => 'User'
end
Benutzer:
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
Erste Frage: Wäre ich mit einer anderen Einrichtung besser bedient?
Zweite Frage: Wie könnte ich Controller erstellen, um Abonnements zu erstellen und zu zerstören und um auf die Abonnements und Abonnenten eines Benutzers zuzugreifen?
Im Moment habe ich eine SubscriptionsController
con create
y destroy
Aktionen, und subscriptions
y subscribers
Aktionen in meinem UsersController
. Allerdings frage ich mich, wenn es nicht eine bessere (mehr RESTful?) Weg, dies zu tun. Der Zugriff auf die Abonnements und Abonnenten eines Benutzers über die index
Klage auf SubscriptionsController
vielleicht?