0
다음과 같이 빈과 관련된 모든 것을 삭제합니다. 그것은 훌륭하고 기능적입니다.레일에서 모델의 before_destroy를 적절하게 구성하는 방법
모델 BIN은
class Bin < ActiveRecord::Base
has_many :savedtweets, :dependent => :destroy
before_destroy :mod_newtweets
def mod_newtweets
Newtweet.where(:tweet_id => @bin.savedtweets.pluck(:tweet_id)).update_all(:status => 'new')
end
end
그러나, 큰 상자를 파괴 모든 내용이 삭제되지만 실행되지 않습니다 mod_newtweets 내 다른 테이블의 열을 업데이트 할 수 있습니다.
컨트롤러에 넣으면 잘 작동합니다.
Newtweet.where(:tweet_id => @bin.savedtweets.pluck(:tweet_id)).update_all(:status => 'new')
나는 모든 것이 올바르게 끝났다고 생각했습니다. 어디서든 @bin 정의하지 않은 동안은 모델에 @bin.savedtweets
을 사용하는
def mod_newtweets
Newtweet.where(:tweet_id => savedtweets.pluck(:tweet_id)).update_all(:status => 'new')
end
:
before_destroy가 실제로 호출되었는지 (mod_newtweets에 중단 점 넣기) 확인할 수 있습니까? 또한 before_destroy가 호출되기 전에 savedtweets가 destoyed 될 수 있습니까? ": dependent => : destroy"를 제거하고 시도해 볼 수 있습니까? – Lachezar
Newtweet을 모델에 적용하면 컨트롤러에 비해 어떤 이점이 있습니까? – user2419316