• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

ruby-on-rails 来源:Vlad 3次浏览

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

## 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,林不知道有关表结构。

此外,即使是单向(一对多)更清洁的数据,您也可能想要多表对多表。它将取决于您需要使用的过程。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)