2017-12-27 9 views
0

Verwendung Gerät und kann nicht Aufgabekann nicht erstellt Aufgabe mit devise

class User < ApplicationRecord 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    has_many :tasks 
end 

Aufgabe

class Task < ApplicationRecord 
    belongs_to :user 
end 

Aufgabe Controller

def create 
    @task = Task.new(task_params) 

    respond_to do |format| 
     if @task.save 
     format.html { redirect_to @task, notice: 'Task was successfully created.' } 
     format.json { render :show, status: :created, location: @task } 
     else 
     format.html { render :new } 
     format.json { render json: @task.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

und meine Modelle Benutzer erstellen, wenn sie versuchen zu erstellen Aufgabe haben einen Fehler

1 Fehler verboten, diese Aufgabe nicht gespeichert werden:

User must exist 

meine Antwort

POST Started "/ Aufgaben" für 127.0.0.1 bei 2017.12.27 14.20.59 von TasksController # 0200 Verarbeitung erstellen, wie HTML Parameter: { "UTF-8" => "✓", "authenticity_token" => "b7EkQsJygYBW1xLIm1uFD8jluXy2LYeoYjAOjKcwWOMHLwtalXmkTrNJu0yhexucwY94COegDcuVrOWLRkf8dg ==", "Aufgabe" => { "title" => "", „Beschreibung "=>", "Priorität" => "", "fällig (1i)" => "2017", "fällig (2i)" => "12", "fällig (3i)" => "27" , "fertig" => "0"}, "commit" => "Aufgabe erstellen"}

User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 2], ["LIMIT", 1]] 
    (0.0ms) begin transaction 
    (0.1ms) rollback transaction 

was ist los?

Antwort

0

Ändern Sie belongs_to :user zu belongs_to :user, optional: true. Rails 5 hat die Standardvalidierung in Zuordnungen eingeführt. Siehe this link für ein besseres Verständnis

+0

es funktioniert, aber nicht gerade. wenn ich zu der new_task_view

\n <%= form.label :user_id %>\n <%= form.text_field :user_id, id: :task_done %>\n
\ n hinzufüge, funktioniert es, wie ich whant, aber ich brauche die handly setzen Benutzer-ID. Ich möchte das automatisch tun – asda111sd

0

in Verfahren in Controller erstellen hinzufügen müssen sich bewusst @task.user_id = current_user.id

+0

Dies bietet keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. - [Aus Bewertung] (/ review/low-quality-posts/18362806) – Mamun

+0

Dies ist eine Antwort. Es könnte mehr erklären, aber es ist eine Antwort. –

0

Sie haben fehlende user_id für task Erstellen

Versuchen Sie, die folgende

Auf Ihrem Code

def create 
    @task = Task.new(task_params) 

    respond_to do |format| 
    if @task.save 
     format.html { redirect_to @task, notice: 'Task was successfully created.' } 
     format.json { render :show, status: :created, location: @task } 
    else 
     format.html { render :new } 
     format.json { render json: @task.errors, status: :unprocessable_entity } 
    end 
    end 
end 

aus dem Code Modified, können Sie verwenden, dass

def create 
    @task = Task.new(task_params) 
    @task.user = current_user 

    respond_to do |format| 
    if @task.save 
     format.html { redirect_to @task, notice: 'Task was successfully created.' } 
     format.json { render :show, status: :created, location: @task } 
    else 
     format.html { render :new } 
     format.json { render json: @task.errors, status: :unprocessable_entity } 
    end 
    end 
end 

Hoffnung helfen

Verwandte Themen