在 Rails(3.2) 应用程序中,我在模型上有一个类方法,如下所示:
def import(level, max = 10)
db = ActiveRecord::Base.connection
result = db.execute("SELECT word FROM levels WHERE level == #{level} AND word NOT IN (SELECT entry FROM words) limit #{max};");
它一次只导入 10 个新单词(创建 10 条记录),这些单词还没有作为 Word 记录存在。
架构看起来像这样:
create_table "levels", :force => true do |t|
t.string "word"
t.integer "level"
end
create_table "words", :force => true do |t|
t.string "entry"
t.integer "level", :default => 0
t.text "definition"
t.string "thesaurus", :default => "none"
end
我是一个 SQL 菜鸟。与rails dbconsole(sqlite3,我也在服务器上使用sqlite3)混在一起,我以某种方式想出了上面的原始sql查询。我知道我可以对 Arel 做同样的事情。我应该如何使用 ActiveRecord 构造查询?