Rails将delete_if转换为sql语句

时间:2014-04-09 20:32:13

标签: sql ruby-on-rails ruby-on-rails-4

我使用delete_if编写了一个异常,我遇到了问题,并希望使用SQL语句或使用活动记录的东西。

这是我的delete_if语句:

Format.all.delete_if { |f| ( f.location_ids.sort & User.current.location_ids.sort ) == User.current.location_ids.sort }

基本上,语句是如果所有用户location_ids都包含在格式location_ids中,则删除。

1 个答案:

答案 0 :(得分:0)

我不完全理解您的问题,但也许这段代码是您正在寻找的:

current_user_location_ids = User.current.location_ids.sort

formats_to_destroy = Format.all.to_a.select do |format|
  format.location_ids.sort == current_user_location_ids
end

formats_to_destroy.map(&:destroy)

注意:它实际上会破坏数据库中的记录!