有两种型号:BeautySalonCategory和BeautySalonService:
class BeautySalonCategory < ActiveRecord::Base
has_many :beauty_salon_services, dependent: :destroy
accepts_nested_attributes_for :beauty_salon_services, allow_destroy: true
end
class BeautySalonService < ActiveRecord::Base
belongs_to :beauty_salon_category
end
在控制器中:
def category_params
params.require(:beauty_salon_category).permit(:name, beauty_salon_services_attributes: [:name, :cost, :duration, :id] )
end
我使用category_params创建一个带有相关BeautySalonService对象的新BeautySalonCategory对象。有用。此外,我想做以下事情:当一个BeautySalonCategory对象被更新时,将删除未使用的相关BeautySalonService对象(例如,一个类别有3个相关服务,而不是我用这3个服务中只有一个服务更新此类别 - 我希望其他2项服务将被删除)。你能帮助我吗?
def update
@category = business.beauty_salon_categories.find(params[:id])
@category.update!(category_params)
end
答案 0 :(得分:0)
您需要将:_destroy
字段添加到允许的参数:
params.require(:beauty_salon_category).permit(:name,
beauty_salon_services_attributes: [:name, :cost, :duration, :id, :_destroy])
并增加部分美容院服务:
<%= f.check_box :_destroy %>
<%= f.label :_destroy, "Remove" %>
我认为这样就可以了。