私は、タスクのモデルがあります:アソシエーション内部のレール部分の使い方は?
## Task
has_many :children, :class_name => "Task"
belongs_to :parent, :class_name => "Task", :foreign_key => "parent_id"
を基本的にユーザーが多くのタスクがあり、各タスクは、多くの子タスクを持っています。
私は、ビュー内でこれをしなかった:<%= render @tasks %>
そしてそれは、データ構造が一次元だったときに正常に動作するために使用しました。
しかし、エラーメッセージ "(SQLite3 :: SQLException:そのような列:tasks.task_id:SELECT"タスク "。* FROM" tasks "WHERE" tasks "。" task_id "= 138)協会。私は "parent_id"を期待していました、それはモデルが参照することになっているからです。
これは、レールがローカル変数 "task"をそのクラス "task"に暗黙的に接続する方法が原因であると推測しています。例えば、私はそうのようにコメント内のフォームを構築したい:
## inside _task.html.erb
<%= form_for task.children.build do |f| %>
<%= f.text_area :description %>
<% end %>
しかしtask.childrenは、それがなっていたときに、そのタスクは、コラム「TASK_ID」を持っていないというエラーを取得しますので、それは動作しません。 「parent_id」を参照してください。この問題を回避する方法はありますか?
FOREIGN_KEY
回答がわかりません。あなたは、私が親と子として、belongs_toでお互いを指していて、has_manyがないという関係をモデル化すべきだと言っていますか?上で書いたように、私はすでにbelongs_to:parentアソシエーションにforeign_key => "parent_id"を持っています。また、なぜ私はこれをbelongs_to:has_many:childrenの代わりにchildrenというモデルとして提案しているのか分かりません。 – Vlad