2016-11-26 7 views
1

私は単純な投稿 - コメントの関係を作成しようとしました。ここに私のモデルは次のとおりです。ここに は私のコメントのモデルである:ここで多態性の関係 "未定義のメソッド`#のためのコメント '後 "エラー

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

は私のPostモデルである:

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 

すべてのようだ:

class Post < ActiveRecord::Base 
    belongs_to :user 

    has_many :comments, as: :commentable 
end 

そしてここでは、生成されてしまったスキーマがあります良いとよく。しかし、私は、コンソールで実行するとき:

Post.last().comments() 

私はエラーを取得する:

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 

私は完全に立ち往生しています!これは確かに何らかの愚かなタイプミスである必要があります。

+0

どのようにコンソールに着きますか?あなたのレールアプリのルートから 'rails c'を使っていますか? – ReggieB

+0

@ReggieBはい、ルートから 'rails c'を使います。そして、「#<投稿ID:12、タイトル:「dsadasdasd」、本文:「asdasdsa」、user_id:4、created_at:「2016-11-26 14:28:37」、updated_at:「2016-11- 26 14:28:37 ">'これはちょうど私が作成したレンダントの投稿です。 –

+1

このコードを追加した後、コンソールを再起動したか再読み込みしましたか? – lightalloy

答えて

0

私のIDEは、奇妙な方法でファイルを使いこなしていたので、実行された実際のコードにはいくつかのビットがありませんでした。すべてのファイルを閉じて再保存すると、問題が解決しました。

関連する問題