在具有多方向关联的Rails中创建三重嵌套对象可以通过以下步骤实现:
accepts_nested_attributes_for
方法来声明允许嵌套属性的模型关联。class A < ApplicationRecord
has_many :a_bs
has_many :bs, through: :a_bs
accepts_nested_attributes_for :bs
has_many :a_cs
has_many :cs, through: :a_cs
accepts_nested_attributes_for :cs
end
params
方法中允许嵌套属性的参数传递。在A模型中的代码如下:class AController < ApplicationController
def a_params
params.require(:a).permit(:name, bs_attributes: [:id, :name], cs_attributes: [:id, :name])
end
end
fields_for
方法来创建嵌套属性的表单字段。在A模型的表单视图中的代码如下:<%= form_with(model: @a, local: true) do |form| %>
<%= form.label :name %>
<%= form.text_field :name %>
<%= form.fields_for :bs do |b_fields| %>
<%= b_fields.label :name %>
<%= b_fields.text_field :name %>
<% end %>
<%= form.fields_for :cs do |c_fields| %>
<%= c_fields.label :name %>
<%= c_fields.text_field :name %>
<% end %>
<%= form.submit %>
<% end %>
build
方法来创建关联对象。示例代码如下:class AController < ApplicationController
def create
@a = A.new(a_params)
@a.bs.build
@a.cs.build
if @a.save
redirect_to @a
else
render 'new'
end
end
end
通过以上步骤,你就可以在具有多方向关联的Rails应用中创建三重嵌套对象了。请注意,以上代码仅为示例,实际应用中可能需要根据具体情况进行适当的修改。
领取专属 10元无门槛券
手把手带您无忧上云