Да, действительно - вот надуманный пример на Хамле.
- form_for @obj, :url => obj_path, :method => :put do |f|
- f.fields_for :sub, f.object.sub do |sub_form|
- unless sub_form.object.new_record?
%span.label= sub_form.label '_delete', 'Remove File'
%span.input= sub_form.check_box '_delete'
А в модели:
accepts_nested_attributes_for :sub, :allow_destroy => true
РЕДАКТИРОВАТЬ - НОВЫЙ ОТВЕТ: Да, вы можете, но это менее "волшебно". Вам нужно определить свой собственный виртуальный атрибут в модели, которую нужно проверить перед сохранением. Вот (непроверенный) пример того, что не использует вложенные атрибуты:
- form_for @obj do |f|
- unless f.object.new_record?
%span.label= f.label 'delete_file', 'Remove File'
%span.input= f.check_box 'delete_file'
А в модели:
attr_accessor :delete_file # this is the "virtual attribute" that gets set by the checkbox
before_update :remove_file
def remove_file
self.file = nil if self.delete_file == '1'
end
См. Railscasts # 167 для более подробного объяснения виртуальных атрибутов.