我可以将“动作视图表单帮助指南(https://guides.rubyonrails.org/form_helpers.html#nested-forms”中关于嵌套表单的示例,以及“路由指南”中https://guides.rubyonrails.org/routing.html#nested-resources)关于嵌套资源的示例,以自结合的形式转录为:在协会指南(https://guides.rubyonrails.org/association_basics.html#self-joins)]中进行了说明
自加入
class Employee < ApplicationRecord has_many :subordinates, class_name: "Employee", foreign_key: "manager_id" belongs_to :manager, class_name: "Employee", optional: true end
嵌套表格帮助器示例
<%= form_with model: @person do |f| %> Addresses: <ul> <%= f.fields_for :addresses do |addresses_form| %> <li> <%= addresses_form.label :kind %> <%= addresses_form.text_field :kind %> <%= addresses_form.label :street %> <%= addresses_form.text_field :street %> ... </li> <% end %> </ul> <% end %>
嵌套路线帮助器示例
resources :magazines do
resources :ads
end
我可以将《 Action View表单帮助指南》(https://guides.rubyonrails.org/form_helpers.html#nested-forms)上的有关嵌套表单的示例转录为嵌套表单,以及...中的示例...] >
关于路由或表单,自连接与任何其他类型的关联之间完全没有区别。
您的路线实际上根本不在乎模型*。他们只是声明一组路由规则,这些规则将传入的请求与控制器进行匹配。因此,他们甚至不在乎您的关联。您可以根据需要声明自己的RESTful路由,并且可以作为程序员(实际上决定了它如何与您的模型相对应)来声明它。该表是自我连接的事实是一个实现细节,实际上与应如何构建应用程序无关。