我的Pack
模型包含行,行又包含项,而pack和line都接受它们包含的集合的嵌套属性。
以下是模型:
Class Pack < ApplicationRecord
has_many :pack_lines, dependent: :destroy
accepts_nested_attributes_for :pack_lines, allow_destroy: true
end
Class PackLine < ApplicationRecord
belongs_to :pack
has_many :pack_line_items, dependent: :destroy
accepts_nested_attributes_for :pack_line_items, allow_destroy: true
end
Class PackLineItem < ApplicationRecord
belongs_to :pack_line
end
我花了很长时间找到合适的语法来permit
用于控制器中的嵌套嵌套参数。
答案 0 :(得分:0)
经过大量的草稿和文档阅读之后,我想到了以下内容:
# In controllers/packs_controller.rb
def pack_params
params.require(:pack).permit(
:name,
pack_lines_attributes: [
:id,
:_destroy,
{
pack_line_items_attributes: [
:id,
:_destroy
]
}
]
)
end
希望有帮助!
答案 1 :(得分:0)
您可以允许这样的嵌套属性。
select count(distinct start)
from
(
select start,max(case when current is not null then 1 else 0 end) mt
from data
group by start)a where mt=0
它们对于params.require(:pack).permit(
:name,
pack_lines_attributes: [
:id, :_destroy, pack_line_items_attributes: [
:id, :_destroy
]
]
)
和has_many
的工作方式相似。对于has_one
,例如has_one