J'ai les modèles suivants:Dans Rails, comment utiliser les actions RESTful pour une ressource qui est la jointure dans une relation plusieurs à plusieurs?
class User < ActiveRecord::Base
has_many :subscriptions
end
class Subscription < ActiveRecord::Base
belongs_to :user
belongs_to :queue
end
class Queue < ActiveRecord::Base
has_many :subscriptions
end
Je veux avoir des méta-données dans la classe d'abonnement et permettre aux utilisateurs de conserver les détails de chacun de leurs abonnements avec chaque abonnement méta-données. Les files d'attente génèrent des messages et ceux-ci sont envoyés aux utilisateurs qui ont des abonnements à la file d'attente. Comme je le vois la ressource que je veux avoir est une liste d'abonnements, c.-à-d. L'utilisateur remplira un formulaire qui a toutes les files d'attente auxquelles ils peuvent s'abonner et mettra des métadonnées pour chacun d'eux. Comment puis-je créer une ressource RESTful Rails pour y parvenir? Ai-je mal conçu ma classe d'abonnement?
J'ai actuellement dans mon routes.rb:
map.resources :users do |user|
user.resources :subscriptions
end
Mais cela fait chaque abonnement une ressource et non la liste des abonnements une seule ressource.
Merci.
Merci! J'ai fait les changements que vous avez suggérés avec quelques ajustements et ai les bases fonctionnant. Un problème est que je reçois des lignes dans les abonnements avec 0 comme queue_id. C'est quand je décoche la case à cocher. Est-il possible de supprimer ces lignes lorsqu'elles ne sont pas cochées? – Greg
essayez la ligne suivante dans le modèle utilisateur: accepte_nested_attributes_for: abonnements,: reject_if => proc {| attributes | attributs ['queue_id']. to_i.zero? } – derfred