Je suis en train de mettre en place une fonctionnalité permettant de suivre les articles qu'un utilisateur a lus.
create_table "article", :force => true do |t|
t.string "title"
t.text "content"
end
Voici ma migration jusqu'à présent :
create_table :user_views do |t|
t.integer :user_id
t.integer :article_id
end
La table user_views sera toujours interrogée pour rechercher les deux colonnes, jamais une seule. Ma question est de savoir à quoi devrait ressembler mon index. Est-ce qu'il y a une différence dans l'ordre de ces tables, est-ce qu'il devrait y avoir plus d'options ou quoi que ce soit d'autre. Ma base de données cible est Postgres.
add_index(:user_views, [:article_id, :user_id])
Gracias.
UPDATE :
Comme il ne peut exister qu'une seule ligne contenant les mêmes valeurs dans les deux colonnes (puisqu'il s'agit de savoir si user_id a lu article_id), dois-je envisager l'option :unique ? Si je ne me trompe pas, cela signifie que je n'ai pas à faire de vérifications de mon côté et que je fais simplement une insertion à chaque fois qu'un utilisateur visite un article.