Rails,destroy vs delete?

时间:2011-06-26 03:42:43

标签: ruby-on-rails ruby-on-rails-3

为什么这样做:

@poll_votes = PollVote.where(:user_id => self.user_id, :poll_id => self.poll_id).all

@poll_votes.each do |p|
  p.destroy
end

但这不是吗?

@poll_votes = PollVote.where(:user_id => self.user_id, :poll_id => self.poll_id).destroy

3 个答案:

答案 0 :(得分:15)

where方法返回符合选择条件的可枚举的activerecord对象集合。在该集合上调用destroy方法与在单个activerecord对象上调用destroy方法不同。

答案 1 :(得分:10)

这应该有效: PollVote.destroy_all(:user_id => self.user_id,:poll_id => self.poll_id)

答案 2 :(得分:1)

'where'是命名范围。您正在命名范围集合上调用destroy方法。尝试destroy_all