J'apprends les rails et j'essaie de comprendre les associations de base de données. Si j'ai une table de base de données avec say Users qui a un ID, un nom, un email, etc. et une table de message avec le message, un expéditeur (utilisateur) et un destinataire (également un utilisateur), comment configurer la migration et le des modèles. Ici, j'utilise Rails 3.1. Je suis assez sûr que je peux le faire avec un seul utilisateur dans la table des messages avec les références: Utilisateur dans la migration, mais je ne suis pas sûr de la façon de mettre en place deux d'entre eux.Rails Database Association/Migration
Répondre
Quelques ressources pour vous aider à démarrer: Rails Tutorial: User ModelRoR Guides: Migrations
d'abord votre migration des utilisateurs
$ rails generate model User name:string email:string
Ensuite, votre message migration
$ rails generate model Message message:string user_id:integer
Ensuite, dans vos messages modèle (/ app/models/messages.rb)
belongs_to :user
Et dans votre modèle utilisateur (/app/models/users.rb)
has_many :microposts
Évidemment, cela est une esquisse de ce qui doit arriver, mais cela ne devrait vous aider à démarrer!
Je ne peux pas ajouter mon commentaire sous le vôtre pour une raison quelconque, mais le commentaire que vous avez fait ne change pas ma réponse. Lire un peu des liens que j'ai publiés vous aiderait vraiment à comprendre ce qui se passe, je pense. –
Merci, c'est le livre que j'utilise pour comprendre les choses. J'ai la migration en ce moment, et le modèle Message avec deux: appartient à des lignes ... ' appartient à: expéditeur,: class_name =>" Utilisateur ",: foreign_key =>" sender_id " appartient à: destinataire,: class_name => "User",: foreign_key => "recipient_id" ' Maintenant, je ne suis pas sûr de ce qui devrait aller dans le modèle de l'utilisateur. Il semble qu'il devrait y avoir deux lignes "has_many" pour l'envoi et une pour la réception, mais je ne sais pas exactement comment les spécifier. Pensées? – slabounty
OK, voici ce que j'ai fini avec (excuses d'avance pour ce que je prévois d'être formatage f'd ... – slabounty
OK, voici ce que j'ai fini avec.
D'abord la migration ...
class CreateMessage < ActiveRecord::Migration
def change
create_table :messages do |t|
t.string :greeting
t.integer :sender_id
t.integer :recipient_id
t.timestamps
end
end
end
suivant dans le modèle de message ...
# Message model
belongs_to :sender, :class_name => "User", :foreign_key => "sender_id"
belongs_to :recipient, :class_name => "User", :foreign_key => "recipient_id"
et dans le modèle de l'utilisateur ...
# Message model
belongs_to :sender, :class_name => "User", :foreign_key => "sender_id"
belongs_to :recipient, :class_name => "User", :foreign_key => "recipient_id"
- 1. Relational Database sur des rails
- 2. Ruby on Rails avec Mongo DataBase
- 3. Ruby on Rails Associations de Model/Database
- 4. Tests RSpec n'utilisant pas les rails application database config
- 5. Database Cleaner mongomapper et concombre
- 6. Simples Database
- 7. Database VB.net
- 8. Android Database
- 9. Database Normalization
- 10. Database Schema
- 11. Shrinking database
- 12. Online Database
- 13. Listbox Database
- 14. Database + hibernate
- 15. Database Android
- 16. comment parcourir mes enregistrements DataBase sur Heroku
- 17. Rendre portable DataBase
- 18. MySQL Database Design Questions
- 19. Database Connection a échoué
- 20. SQLite3 - Impossible Open Database
- 21. MVC4 Linq Database Call
- 22. Model Agency Database Schema
- 23. DataBase sur Mac OS
- 24. RavenB select database
- 25. Database Design Suggestion
- 26. WCF to Database Connectivity
- 27. Travailler avec Access DataBase
- 28. Objective-C Database Connections
- 29. Prolog Database Query
- 30. Back-end + Database Design
OK, il semble comme dans mon modèle je veux quelque chose comme: 'classe Message appartient à: expéditeur, nom_classe => Utilisateur appartient_à: destinataire, nom_classe => Utilisateur end' mais je ne suis toujours pas sûr de ce que j'aurais mis dans la migration pour obtenir les colonnes sender_id et recipient_id. – slabounty