sql - 如何在 Rails 中的连接表上指定条件

标签 sql ruby-on-rails activerecord

我正在尝试使用 ActiveRecord 在 Rails 中执行查询,该查询指定连接表上的某些条件。即使我按照这里的示例操作,我似乎也无法让它工作:

http://guides.rubyonrails.org/active_record_querying.html#specifying-conditions-on-the-joined-tables

来自 guides :

Client.joins(:orders).where(:orders => {:created_at => time_range})

我的数据库架构如下所示,其中包含表分数提交任务:

  create_table "scores", :force => true do |t|
    t.integer  "value"
    t.integer  "user_id"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "scores", ["user_id"], :name => "index_scores_on_user_id"

  create_table "submissions", :force => true do |t|
    t.integer  "user_id"
    t.integer  "task_id"
    t.integer  "score_id"
    t.datetime "completed_at"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "submissions", ["score_id"], :name => "index_submissions_on_score_id"
  add_index "submissions", ["task_id"], :name => "index_submissions_on_task_id"
  add_index "submissions", ["user_id"], :name => "index_submissions_on_user_id"

  create_table "tasks", :force => true do |t|
    t.integer  "episode_id"
    t.integer  "score"
    t.string   "key"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

所以我想做一个查询,在那里我可以找到与特定任务相关的所有“分数”。提交属于任务和分数。

我的查询现在如下所示:

Score.joins(:submission).where(:submission => {:task_id => 1})

这会生成以下语法:

SELECT "scores".* FROM "scores" INNER JOIN "submissions" ON "submissions"."score_id" = "scores"."id" WHERE "submission"."task_id" = 1

这会产生以下错误:

SQLite3::SQLException: no such column: submission.task_id

但是有一列 submission.task_id,您可以在数据库架构中看到它。我可以成功地做到这一点:

SELECT "submissions".* FROM "submissions" WHERE "submissions"."task_id" = 1

最佳答案

子句中的名称应该是复数以引用表名称:

Score.joins(:submission).where(:submissions => {:task_id => 1})

关于sql - 如何在 Rails 中的连接表上指定条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9033797/

相关文章:

mysql - 如何查找两个表中不匹配的计数?

mysql - 创建一个事件并插入

php - 在 CodeIgniter 中使用 this->db->e​​scape_str() 函数时出现语法错误

javascript - rails : Foundation 5 Reveal Modal to Submit Button

javascript - 如何在 Rails 应用程序的一个页面上包含 JQuery 库?

android - ActiveAndroid:锁定更新记录?

mysql - 在具有 6 列的连接中获取两列的不同记录

ruby-on-rails - Rails new - 参数数量错误(0 代表 1)

sql - 更好的 SQL - :group vs. :select => 'DISTINCT'

ruby-on-rails - 如何在没有加入的情况下为急切加载设置条件?