| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Ruby On Rails > Ассоциации, не работает callback |
| Автор: DimanLin 29.3.2009, 00:45 |
| Контроллер News.destroy(params[:id]) Модель: class News < ActiveRecord::Base has_one :prevnewsimage, :dependent => :destroy has_many :newsimages, :dependent => :destroy, :before_remove => :removenewsimagqe validates_presence_of :header, :prevtext, :text validates_length_of :header, :maximum => 255 @@onpage = 8 def self.perpage(page) offset = (page.to_i * @@onpage) - @@onpage self.find(:all, :offset => "#{offset}", :limit => "#{@@onpage}") end def removenewsimagqe(newsimage) File.delete("#{RAILS_ENV}/public/newsimage/#{newsimage.name}") end def removeprevimages(previmages) File.delete("#{RAILS_ENV}/public/newsimage/#{previmages.name}") end end Не могу добиться удаления картинок для модели newsimage. Все дочерние ассоциации по отношению к News удаляются, а callback(before_remove) для newsimage не вызывается.... А почему? Делаю изходя из документации http://guides.rubyonrails.org/association_basics.html Раздел: 4.5 Association Callbacks |
| Автор: DimanLin 1.4.2009, 20:58 |
| Решил проблемму немного подругому но как мне кажется более верным способом. В документации http://guides.rubyonrails.org/association_basics.html Раздела 4.5 Association Callbacks В этом разделе приведён пример использования callback метода: ================================================= class Customer < ActiveRecord::Base has_many :orders, :before_add => :check_credit_limit def check_credit_limit(order) ............................. end end ================================================= В моём коде за основу брался этотже пример. Разница была только в типе ассоциативного калбака, в примере :before_add у меня before_remove has_many :newsimages, :dependent => :destroy, :before_remove => :removenewsimagqe def removenewsimagqe(newsimage) File.delete("#{RAILS_ENV}/public/newsimage/#{newsimage.name}") end Вызов метода removenewsimagqe не происходил. Так и не разобрался почему... Из документации видно, что есть ещё простые колбаки(не ассоциативные). http://guides.rubyonrails.org/activerecord_validations_callbacks.html#callbacks-overview Сним всё заработало. |