私はRuby on Railsの初心者です。私は文字通り昨晩始まった。私はGetting Started with Railsのチュートリアルに従っていますが、いくつかの変更を行いました。投稿とコメントのあるブログではなく、プロジェクトにタスクが関連付けられている簡単なタスク追跡アプリケーションを作成しています。親モデルのメソッドは定義されていません
step #9 (Deleting Comments)まですべてがうまくいっていました。チュートリアルによると、私はcomment.post
を呼び出すことによってコメントの親モデルを得ることができるはずです。私の場合はその類似点はtask.project
です。しかし、Railsが、私はtask.project
を持っている部分をレンダリングしようとすると、それはNoMethodErrorが発生します。次のように私のモデルがある
undefined method `project' for #<Task:0x7fb0011cf058>
:レールコンソールを使用して
class Project < ActiveRecord::Base
validates :name, :presence => true
has_many :tasks, :dependent => :destroy
end
class Task < ActiveRecord::Base
validates :name, :presence => :true
belongs_to :project
end
を、私は私のことを決定タスクには、関連付けられたプロジェクトのIDを返すproject_id
メソッドがあります。したがって、私は部分的にtask.project
の代わりにProject.find(task.project_id)
を使用して問題を回避することができます。しかし、それは「間違っている」と思われ、私の2つのモデルの関係が何らかの形で壊れているかどうか疑問に思います。
ここでは何が起こっていますか?
更新:タスクモデルのvalidates
行をコメントアウトすると、すべてのメソッドが正しく機能します。私はなぜそれが事実であるか理解していない。
更新2:これがわかりました。私は私の仕事モデルのvalidates
行の単純なブール値の代わりにシンボル:true
を使用していました。私がスタックトレースにもっと注意を払っていたのであれば、はるかに早くそれを理解していたでしょう。どのような恥ずかしい間違い!
コードは正常です。 – tybro0103
タスクには名前属性がありますか?おそらく、あなたの 'schema.rb'の関連するチャンクも含めることができます。 –