2016-09-09 4 views
0

Also, in der Rails-Konsole Ich bin eine Zeile in dieser Art und Weise zu schaffen:Rails 5 Filter Felder

params = {:question=>"33333", :explanation=>"333", :hint=>"333", :worth=>1, :tags=>"3333", :active=>true, :qtype=>true, :user_id=>4} 

q = Question.create! params 

SQL (3.2ms) INSERT INTO "questions" ("user_id", "question", "explanation", "hint", "tags", "worth", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id" [["user_id", 4], ["question", "33333"], ["explanation", "333"], ["hint", "333"], ["tags", "3333"], ["worth", 1], ["created_at", 2016-09-09 20:45:51 UTC], ["updated_at", 2016-09-09 20:45:51 UTC]] 

wie jeder kann sieht, „aktiv“ und „QTYPE“ Felder werden von Rails gefiltert. Beide Spalten existieren in der Migrationsdatei und in der PostgreSQL-Tabelle. Das Modell ist ziemlich einfach:

class Question < ApplicationRecord 
    belongs_to :user 
    has_many :answer 

    default_scope { order('id DESC') } 

    validates :question, presence: true 
end 

Ich verstehe nicht, warum Schienen diese Felder filtert. Ich löschte die schema.rb-Datei und erstellte die Datenbank von Grund auf, aber der Fehler bleibt bestehen.

Antwort

1

Es wurden bereits Probleme mit Booleans gemeldet, bei denen ein NULL-Wert in PostgreSQL nicht korrekt von Rails festgelegt wurde.

Es sollte es lösen, wenn Sie die Felder mit dem Standardwert neu erstellen. Rollen Sie die Migration zurück, und dann neu mit ...

add_column :questions, :active, :boolean, default: false 
add_column :questions, :qtype, :boolean, default: false 

übrigens die Linie ...

has_many :answer 

sollte wahrscheinlich sein ...

has_many :answers