Ich habe die richtige Logik für den User
und Course
Logikcode eingerichtet. Hier sind meine Dateien, die ich derzeit haben:Benutzer-ID wird beim Erstellen eines neuen Modellobjekts nicht übernommen
app/models/course.rb:
class Course < ApplicationRecord
belongs_to :user
validates_presence_of :course
end
app/models/user.rb (verwendet Devise):
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:confirmable, :omniauthable
has_many :courses
end
db/migrieren/... create_courses.rb:
class CreateCourses < ActiveRecord::Migration[5.0]
def change
create_table :courses do |t|
t.string :course, limit: 300
t.text :description
t.string :location
t.references :user, foreign_key: true
t.timestamps
end
add_index :courses, :course, unique: true
add_index :courses, :description
end
end
Wenn ich ein neues Objekt für course
schaffen, ich folgende Ausgabe:
1 Fehler in diesem Artikel aus verboten gespeichert werden:
- Benutzer muss existieren
Stapelüberwachung des Problems:
Started POST "/courses" for 75.108.207.135 at 2016-07-22 22:33:28 -0500
Cannot render console from 75.108.207.135! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by CoursesController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"+RSKtrUI2jQ5DcXcndw7Lb9PN+mi6FJxGC3zX8oBLTnZdFeUTzTgZGc84V7onkW2UeNPTO2pHJ9cV2vx9yLjFQ==", "course"=>{"course"=>"Hello world", "description"=>"Hi", "location"=>"Hi"}, "commit"=>"Add Course"}
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 2], ["LIMIT", 1]]
(0.1ms) begin transaction
(0.1ms) rollback transaction
Rendering courses/new.html.erb within layouts/application
Rendered courses/new.html.erb within layouts/application (2.1ms)
Rendered layouts/_nav.html.erb (3.0ms)
Completed 200 OK in 181ms (Views: 176.4ms | ActiveRecord: 0.5ms)
app/controllers/courses_controller.rb:
def create
@course = Course.new(course_params)
respond_to do |format|
if @course.save
format.html { redirect_to @course }
format.json { render :show, status: :created, location: @course }
else
format.html { render :new }
format.json { render json: @course.errors, status: :unprocessible_entity }
end
end
end
Gibt es etwas, das ich während der Modellerstellung weggelassen oder verwirrt es ganz nach oben?
Warum wird die Validierung in Ihrem Kursmodell, das Vorhandensein natürlich validieren? Kurs ist das Objekt, kein Feld des Objekts. Sollten Sie die Anwesenheit eines Benutzers nicht bestätigen? – MarsAtomic
Bitte fügen Sie die Kurs erstellen Methode – Sravan
Frage aktualisiert. –