2010-03-22 10 views
35

Ich habe ein User Modell.wie man Daten zu Datenbank von Schienen Konsole

>> @u = User.new 
=> #<User id: nil, userid: nil, password: nil, created_at: nil, updated_at: nil, user_first_name: nil, user_last_name: nil, user_status: nil, user_type: nil> 

Ich bin nicht in der Lage Daten an die Users Tabelle aus der Konsole hinzuzufügen. Ich mache folgendes:

>> @u.userid="test1" 
=> "test1" 
>> @u.password="test2" 
=> "test2" 
>> @u.user_first_name="test3" 
=> "test3" 
>> @u.user_last_name="test4" 
=> "test4" 
>> @u.user_status="test5" 
=> "test5" 
>> @u.user_type="test6" 
=> "test6" 
>> @u.save 
NoMethodError: undefined method `userid' for nil:NilClass 

was mache ich falsch? Ich möchte einfach nur eine Zeile mit Daten zur App hinzufügen.

+3

+2 und keine Antworten mit versuchen. das ist nicht sehr SO :) –

+2

Sie haben "id: nil, userid: nil". Warum 2 IDs? Ist userid wirklich eine Zeichenfolge? Könnten Sie Ihr Modell veröffentlichen? – James

+1

'userid' riecht fischig zu mir, es ist nicht sehr rails-esque. Können Sie bitte alle Attribute des Modells posten? – Kezzer

Antwort

2

Ich habe versucht, eine neue Rails-Anwendung zu erstellen, und ich kann folgendes tun: mit erstellen, anstatt neuer

irb(main):008:0> u= User.new 
=> #<User id: nil, name: nil, created_at: nil, updated_at: nil> 
irb(main):009:0> u.save 
=> true 
irb(main):011:0> User.find(3) 
=> #<User id: 3, name: nil, created_at: "2010-03-22 11:51:31", updated_at: "2010-03-22 11:51:31"> 

Das gleiche funktioniert. Ich nehme an, dass Ihr Benutzermodell eine Beziehung zu einem anderen Objekt haben möchte, das noch nicht verfügbar ist. Können Sie Ihr aktuelles Schema (in db/schema.rb) bereitstellen?

-Mine ist wie die Suche:

ActiveRecord::Schema.define(:version => 20100322114826) do 

    create_table "users", :force => true do |t| 
    t.string "name" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

end 
17

Überprüfung Versuchen Sie, um zu sehen, ob die Instanz, die Sie erstellen gültig ist. Der einfachste Weg ist das Speichern! Methode ...

@u.save! 

Dadurch wird eine Ausnahme ausgelöst werden, wenn die Instanz nicht alle Validierungen nicht besteht, oder wenn andere Probleme zu finden sind. Der Stack-Trace wird dann hoffentlich nützliche Informationen liefern.

Auch anstelle @u = ... der Verwendung von nur u = ...

49
>> u = User.create :userid => "myuserid", :password => "mypasswd", :user_first_name => "test", :user_last_name => "testovich", :user_status => "mystatus", :user_type => "mytype"