2014-10-26 4 views
0

Существует 2 модели: BeautySalonCategory и BeautySalonService:Удаление неиспользуемых вложенных записей обновление модели в Rails 4

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, чтобы создать новый объект BeautySalonCategory с соответствующей BeautySalonService объекты. Оно работает. Также хочу сделать следующее: при обновлении объекта BeautySalonCategory будут удалены неиспользуемые связанные объекты BeautySalonService (например, категория имеет 3 связанные службы, а я обновляю эту категорию только 1 службой от этих 3 - Я хочу, чтобы другие 2 службы были удалены). Вы можете мне помочь?

def update 
    @category = business.beauty_salon_categories.find(params[:id]) 
    @category.update!(category_params) 

end 
+0

Вы спрашиваете, когда собираетесь обновить категорию, сохранить полученную вложенную службу BeautySalonService и удалить все остальные для этой категории? – Alireza

ответ

0

Вам нужно добавить :_destroy поля в разрешенный Params:

params.require(:beauty_salon_category).permit(:name, 
    beauty_salon_services_attributes: [:name, :cost, :duration, :id, :_destroy]) 

И добавить к частичной beauty_salon_services:

<%= f.check_box :_destroy %> 
<%= f.label :_destroy, "Remove" %> 

Я думаю, что это будет делать трюк.

Смежные вопросы