2016-11-26 2 views
1

Ich habe versucht, eine einfache Posts-Kommentare-Beziehung zu erstellen. Hier ist mein Modell: hier ist mein Kommentar Modell:Polymorphe Beziehung "undefined Methode` Kommentare 'für # <Post ... "Fehler

class Comment < ActiveRecord::Base 
    belongs_to :commentable, polymorphic: true 
    belongs_to :user 
end 

Hier ist mein Beitrag Modell:

class Post < ActiveRecord::Base 
    belongs_to :user 

    has_many :comments, as: :commentable 
end 

Und hier ist das Schema, das erzeugt wurde:

create_table "comments", force: :cascade do |t| 
    t.text  "body" 
    t.integer "commentable_id" 
    t.string "commentable_type" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

    add_index "comments", ["commentable_type", "commentable_id"], name: "index_comments_on_commentable_type_and_commentable_id", using: :btree 

Alles scheint gut und gut. Aber wenn ich in der Konsole:

Post.last().comments() 

Ich erhalte eine Fehlermeldung:

NoMethodError: undefined method `comments' for #<Post:0x0000000357e2b8> 
    Did you mean? committed! 
      from /usr/local/rvm/gems/ruby-2.3.0/gems/activemodel-4.2.7.1/lib/active_model/attribute_methods.rb:433:in `method_missing' 
      from (irb):36 

Ich bin ganz fest! Das muss sicherlich eine Art dummer Tippfehler sein.

+0

Wie kommen Sie zur Konsole? Benutzt du 'rails c' von der Wurzel deiner Rails App? – ReggieB

+0

@ReggieB Ja, ich benutze 'rails c' von der Wurzel. Und wenn ich '# " Das ist nur ein Rendom Beitrag, den ich erstellt habe. –

+1

Haben Sie nach dem Hinzufügen dieses Codes die Konsole neu gestartet oder neu geladen? – lightalloy

Antwort

0

Okay, es stellte sich heraus, dass meine IDE auf seltsame Weise mit den Dateien rumhing, so dass der eigentliche Code, der ausgeführt wurde, einige Bits fehlte. Durch das Schließen aller Dateien und das erneute Speichern wurde das Problem behoben.

Verwandte Themen