C'est la structure de ma base de données en Ruby on Rails:Comment effectuer cette recherche dans RoR?
-
utilisateur
- ont de nombreuses notes
- notes ont de nombreuses catégories
- catégories ont de nombreuses notes
La relation entre les notes et les catégories est has_many :through
, j'ai un modèle nommé NoteCategory
et une table note_categories
.
Le modèle de note possède un champ de date, qui représente la date à laquelle la note a été créée.
je reçois les notes pour l'utilisateur avec cette ligne:
current_user.notes
Comment puis-je fournir une date et retourner les catégories pour toutes les notes de l'utilisateur qui ont été créés à cette date? Merci d'avoir lu.
edit: J'ai oublié de préciser que j'ai également besoin des catégories à classer par le champ created_at de la note à laquelle elles sont attachées.
modifier 2: voici les associations réelles
user.rb
has_many :notes
note.rb
belongs_to :user
has_many :note_categories
has_many :categories, :through => :note_categories
category.rb
has_many :note_categories
has_many :notes, :through => :note_categories
Merci pour votre réponse, je vais essayer. Une question rapide, le champ que je veux trier est en fait notes.created_at, c'est-à-dire que les catégories sont triées en fonction de la date de création de la note à laquelle elles sont attachées. Est-ce que c'est ce que fait votre code? – ben
Révisé, je vous ai mal compris ... – hurikhan77
J'ai l'erreur suivante: Macro de réflexion de source invalide: has_many: through pour has_many: catégories,: through =>: notes. Utilisez: source pour spécifier la réflexion de la source. – ben