Ich habe zwei Tabellen (d. H. Benutzer und Profile). Das Schema der Tabellen ist:Ruby auf Schienen: Problem mit einer Datenbankeinfügung
create_table "users", force: :cascade do |t|
t.string "username"
t.string "password_digest"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "profiles", force: :cascade do |t|
t.string "gender"
t.integer "birth_year"
t.string "first_name"
t.string "last_name"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
Das Modell ist:
class Profile < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :todo_lists
has_many :many_items, through: :todo_lists, source: :todo_items
end
Ich versuche, die Datensätze durch folgende Schritte hinzuzufügen:
user = User.create! username: "Fiorina",password_digest: "abc"
user_profile = Profile.create! gender:"F",birth_year:"1954",first_name:"Carly",last_name:"Fiorina"
user_profile.profile = user
Allerdings erhalte ich die Fehlermeldung:
"NoMethodError: undefinierte Methode` profile = 'für # "
Die Fehlermeldung ist klar.Wie auch immer, ich weiß nicht, wie es zu lösen, d. H. Wie profile
Methode zu erstellen. Außerdem lese ich den folgenden Blog und es sagt, dass eine Eins-zu-Eins-Beziehung 4 Methoden erstellen wird. Gibt es trotzdem, dass 4 Methoden erstellt wurden?
http://requiremind.com/differences-between-has-one-and-belongs-to-in-ruby-on-rails/