J'ai deux modèles: Utilisateur et Notification.overwrite has_many association pour utiliser deux owner_ids différents
User has_many :notifications
Notification belongs_to User
Ceci est la description du code pour les notifications
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | YES | | NULL | |
| namespace | varchar(255) | YES | | NULL | |
| key | varchar(255) | YES | | NULL | |
| value | tinyint(1) | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
et ce sont quelques exemples de notifications:
+----+---------+-----------+-----------------+-------+
| id | user_id | namespace | key | value |
+----+---------+-----------+-----------------+-------+
| 4 | -1 | facebook | launch_campaign | 1 |
| 5 | -1 | facebook | add_video | 1 |
| 6 | -1 | facebook | add_image | 1 |
| 7 | -1 | twitter | add_image | 1 |
| 8 | -1 | twitter | add_video | 1 |
| 9 | -1 | twitter | launch_campaign | 1 |
| 10| 21 | facebook | add_video | 0 |
| 11| 1 | facebook | add_image | 0 |
| 12| 10 | twitter | add_image | 0 |
| 13| 12 | twitter | add_video | 0 |
+----+---------+-----------+-----------------+-------+
les lignes avec la user_id = -1 sont les valeurs par défaut, et chaque fois que l'utilisateur écrase la valeur par défaut, j'ajoute une ligne pour cet utilisateur et l'espace de noms et l'action ainsi que les valeurs écrasées.
Maintenant, je rails si je
User.notifications
Je voudrais seulement obtenir les notifications qui ont le user_id en eux, mais je veux aussi les notifications par défaut (use_id = -1) que l'utilisateur n'a pas écrasé. Des idées comment faire cela? D'autres conseils sur ce design/sujet sont appréciés :)!
c'est aussi une explication plus détaillée de ma conception Database + data model design pattern
merci beaucoup! Je ne savais pas à propos de ces – Matilda
Vous êtes les bienvenus. – ABrukish
Donc l'interpolation de chaîne n'a pas fonctionné pour moi. Je l'ai mis en quate unique et j'ai aussi essayé% q pour finder_sql mais chaque fois que je fais user.notifications je reçois Notifications Load (0.3ms) SELECT 'notifications'. * FROM' notifications' WHERE 'notifications'.'user_id' = 1 AND (id_utilisateur = # {id} OU id_utilisateur = -1) des idées? – Matilda