모델이 Vote
이고 after_validation
콜백을 사용하고 있습니다.파인더에서 'self'를 호출하는 것에 대해 혼란스러워합니다.
class Vote < ActiveRecord::Base
after_validation :destroy_reciprocal_votes
belongs_to :voteable, :polymorphic => true
belongs_to :voter, :polymorphic => true
private
def destroy_reciprocal_votes
votes = Vote.delete_all(:vote => false, :voteable_type => "Recipe", :voteable_id => self.voteable_id, :voter_type => "User", :voter_id => self.voter_id)
end
end
당신이 내 방법 destroy_reciprocal_votes
에, 나는 self.voteable_id
및 self.voter_id
라고 볼 수있다, 왜이 반환 nil
합니까? 여기에 내 ID를 어떻게 검색해야합니까? 내가 콘솔에서 작업을 수행 할 때
는 그것을 잘 작동합니다 : 당신만큼 당신이 연결을 지정할로 ID를 참조 할 필요가 없습니다
>> voteable_id = "3"
>> voter_id = "162"
>> Vote.delete_all(:vote => false, :voteable_type => "Recipe", :voteable_id => voteable_id, :voter_type => "User", :voter_id => voter_id)
은 인스턴스에서 'self'를 호출하지 못하도록하는 '비공개'입니까? –