pri*_*iya 5 activerecord ruby-on-rails
create table foo (id, name, order, ...);
create table foo_bar (id, foo_id, name, value);
Run Code Online (Sandbox Code Playgroud)
foo包含值为(1,2,3,4,5,... 10)的order列,假设foo_bar包含每个foo的多个记录.
如何删除订单值为3..6及其相关记录的foos?
Sal*_*lil 13
class Foo < ActiveRecord::Base
has_many :foo_bars, :dependent => :destroy
end
class FooBar < ActiveRecord::Base
belongs_to :foo
end
Run Code Online (Sandbox Code Playgroud)
如果您的关系如上所述,则以下代码将起作用
Foo.delete_all(["id in (?)", [3,4,5,6]])
Run Code Online (Sandbox Code Playgroud)
要不就
Foo.delete([3,4,5,6])
Run Code Online (Sandbox Code Playgroud)
参考删除
EDITED
从小知道我知道你的问题我认为你有类似跟随的东西
foo表
id some_column order
1 some_value 3
2 some_value 4
3 some_value 3
4 some_value 2
5 some_value 1
6 some_value 5
7 some_value 6
Run Code Online (Sandbox Code Playgroud)
foo_bar表
id some_column foo_id
1 some_value 2
2 some_value 1
3 some_value 3
4 some_value 2
5 some_value 4
6 some_value 5
7 some_value 6
Run Code Online (Sandbox Code Playgroud)
然后用户关注order
而不是id
Foo.delete_all(["order in (?)", [3,4,5,6]])
Run Code Online (Sandbox Code Playgroud)