C'est la clé primaire (colonne : id
) qui est toujours créée lorsqu'une table est créée dans la base de données, mais par défaut elle est enregistrée à partir de la première dans l'ordre dans lequel elle a été enregistrée dans l'enregistrement. Cependant, si vous regardez les services existants, vous pouvez voir que le numéro de produit est inclus dans l'URL ou que les informations utilisateur peuvent être consultées sur des pages telles que https: // www.uniqlo.com / jp / ja / products / E428313-000
. Le nom d'utilisateur peut être un paramètre.
Par conséquent, dans cet article, je vais vous présenter comment changer la clé primaire en une colonne arbitraire dans la base de données (MySQL).
db/migrate/_Fichier de migration.rb
class ● ● ● < ActiveRecord::Migration[5.2]
def change
create_table :nom de la table, id: false, primary_key: :Le nom de la colonne doit être la clé primaire|t|
# `id: false`A cette table`:id`Ne créez pas de colonnes. C'est une description.
# `primary_key:`Spécifiez le nom de la colonne comme clé primaire.
t.timestamps
end
end
end
app/models/Nom du modèle.rb
nom du modèle de classe< ApplicationRecord
self.primary_key = "Le nom de la colonne doit être la clé primaire"
#En faisant cette description dans le fichier modèle, la colonne qui sera la clé primaire (clé primaire) est spécifiée.
end
model name.find (params [: id])
du contrôleur à : id
Lorsque vous appelez l'enregistrement de ...Journal du serveur
Parameters: {"id"=>"valeur"}
SELECT `nom de la table`.* FROM `nom de la table` WHERE `nom de la table`.`Nom de la colonne comme clé primaire` =Valeur LIMITE 1`
Et vous pouvez voir que la valeur qui a été utilisée comme clé primaire est lue correctement.
Recommended Posts