如何在轨道内部使用关联部分?
我有一个任务模式:如何在轨道内部使用关联部分?
## Task has_many :children, :class_name => "Task"
belongs_to :parent, :class_name => "Task", :foreign_key => "parent_id"
基本上用户有很多任务,每个任务都有许多子任务。
我做了这个一个视图中:
<%= render @tasks %>
并用它正常工作时的数据结构是一维的。 (SQLite3 :: SQLException:no such column:tasks.task_id:SELECT“tasks”。* FROM“tasks”WHERE“tasks”。“task_id”= 138)“后添加”“协会。我期待“parent_id”,因为这就是模型应该提到的。
我猜测这是因为rails如何将本地变量“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
指定用于关联的外键。通过 默认情况下,这被猜测为与 “_id”后缀关联的名称。因此,定义belongs_to:person关联 的类将使用“person_id”作为默认值:foreign_key。同样, belongs_to:favorite_person,:class_name =>“Person”将使用 “favorite_person_id”的外键。
belongs_to :children, :class_name => "Task",:foreign_key => "parent_id"
您可能需要使用PK,林不知道有关表结构。
此外,即使是单向(一对多)更清洁的数据,您也可能想要多表对多表。它将取决于您需要使用的过程。
回答:
您需要重建您的关联。
has_many :children, :class_name => "Task", :foreign_key => "parent_id" belongs_to :parent, :class_name => "Task"
因为下面的问题证明Rails文档中有错误。
Ruby on Rails guides document on Activerecord association incorrect?
对于以下问题,您的参考访问,看到的关联是如何在这个答案中使用。
Rails Model has_many with multiple foreign_keys
以上是 如何在轨道内部使用关联部分? 的全部内容, 来源链接: utcz.com/qa/262645.html