attribut inconnu: user_id
J'obtiens le message d'erreur attribut inconnu: user_id lors de l'exécution de current_user.les histoires.construire
class User < ActiveRecord::Base
has_many :stories, class_name: 'Story', foreign_key: 'user_id', dependent: :destroy
...
class Story < ActiveRecord::Base
belongs_to :user, class_name: 'User', foreign_key: 'user_id'
...
schéma.rb
create_table "stories", :force => true do |t|
t.string "responsible"
t.string "descr"
t.string "state"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "users", :force => true do |t|
t.string "email"
t.string "password_digest"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "name"
end
Il ne contient pas de 'user_id' champ. Des idées?
OriginalL'auteur cnaize | 2012-07-17
Vous devez vous connecter pour publier un commentaire.
Kulbir est exact que vous avez besoin de définir un
user_id
colonne dans votrestories
table, mais n'explique pas la manière de le faire.La manière correcte de faire ce changement est de créer une nouvelle migration. Par convention, il doit être appelé
add_user_id_to_stories
et serait créé comme suit (en supposant que vous êtes à l'aide de Rails 3+):Si vous exécutez, il faut effectivement générer une migration qui contient déjà le changement que vous devez faire, ce qui doit être quelque chose comme:
Comme un de côté lorsque vous êtes en suivant les Rails de conventions relatives à l'association de nommage, qui vous êtes, vous pouvez réellement sauter un grand nombre de la spécification supplémentaire. Dans le
User
modèle, vous pouvez spécifier touthas_many :stories
et dans leStory
modèle de spécifierbelongs_to :user
. Les Rails assumer les mêmes noms de classe et les clés étrangères que vous avez spécifié.OriginalL'auteur Emily
Vous devriez avoir un
user_id
champ dans votrestories
tableau comme ci-dessous pour définir l'association de vos modèles.Modifier
Vérifier Emily réponse pour une explication détaillée.
OriginalL'auteur Kulbir Saini
vous devez utiliser la nouvelle syntaxe et de passer le fieldtype comme symbole
OriginalL'auteur RailsZilla.com