【发布时间】:2011-04-22 01:00:23
【问题描述】:
我有一个模型 Foo 和一个模型 Bar,两者都有 has_many :bar_foos (然后是彼此的 has_many :through => :bar_foos)。通过 BarsFoo 模型,这是 Foo 和 Bar 之间简单的多:多关系。
我想删除 bar_foos 表中的几行。具体来说,我想删除与任何给定 Foo 集和任何给定 Bars 集相关的任何 bar_foo 记录。为了提高性能,我想发出一个数据库调用来执行此操作。
对应的 SQL 语句为:
DELETE FROM bar_foos WHERE bar_id IN ( ?, ?, ? ) AND foo_id in ( ?, ?, ? )
...同时用适当的 ID 替换 ?s。
如何使用 Rails 2.3.x 执行此操作?
理想情况下,我不会自己编写实际的 SQL,而是调用 ActiveRecord 方法。但是,我怀疑这是否存在。
除此之外,我将自己编写 SQL 语句,但是:
- 我想避免在 SQL 字符串中硬编码表/列名
- 我想使用某种自动(即:可靠)方法来转义 SQL 参数而不是仅连接字符串。
【问题讨论】:
标签: sql ruby-on-rails activerecord