如何在轨道内部使用关联部分?

我有一个任务模式:如何在轨道内部使用关联部分?

## 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

回到顶部