Je souhaite créer un modèle 'relation' qui s'étend sur Activerecord :: base, définissez le nom de la table comme «Questions_Tags» et sans clé primaire. Que dois-je faire? Je sais utiliser "CREATE_TABLE" peut résoudre ce problème, mais c'est juste ce que Je veux savoir: quelle est la magie derrière
create_table (: id => false) code>? Comment puis-je obtenir le même effet sans utiliser
Create_Table (: id => false) code>? P> p>
3 Réponses :
Si vous cherchez à créer une table de pivot, à l'origine du nom de la table, AR vous gérera à l'arrière-plan. P>
Cependant, si vous cherchez à créer une table avec plus de feilds, alors: 1) renommer votre table à "Regents" s'il vous plaît 2) Utilisez une clé primaire "ID" P>
Il n'y a pas de bonne raison de ne pas utiliser une clé primaire dans une table, et il est très probable que vous vous retrouviez bien la regretter plus tard. P>
Pourquoi ne voulez-vous pas un pk? p>
Enregistrement actif attend un PK, et je ne vois pas ce qui nuit à faire. P>
Si vous créez des mappages de DB Legacy, c'est bien, mais les tables de jointure dans le modèle / design Activerecord ont des clés primaires. C'est une convention que vous pouvez suivre pour vous rendre la vie plus facile ou sur la lutte constante.
Il y a plusieurs fois que vous ne voudriez pas une clé primaire. Sur les tables de rapport où vous faites des tonnes d'insertions et de lis en fonction des colonnes à clé principale, vous pouvez vouloir aussi peu d'index que possible. Avoir une colonne de clé primaire que vous n'allez pas utiliser ne fait que des inserts lents.
Créer une migration qui ressemble à ceci:
class CreateQuestionsTags < ActiveRecord::Migration def self.up create_table :questions_tags, {:id => false, :force => true} do |t| ... t.timestamps end end def self.down drop_table :questions_tags end end
Selon moi, il n'y a pas de magie.
Create_Table Code> a une option supplémentaire, que l'ID
code> -Column doit être créé. C'est tout. Lorsque vous demandez "la magie": voulez-vous dire le code, la déclaration SQL générée ou autre chose ...?
Si vous voulez savoir ce qui se passe dans les coulisses, je suggérerais de creuser Depper dans la documentation API Rails: API.RubyonRails.org/classes/acterecord/base.html , api.rubyonrails.org/classes/acterecord/migration.html , api.rubyonrails.org/classes/acterecord/associations/.../a>
@ Nathanvda, Auralbee: Merci les deux. Je suis nouveau dans les rails, peut-être que je dois lire plus d'articles sur ActiveRecord.