我正在写一个有效的记录范围。我有以下sql:
SELECT user.roll_number, first_name, last_name FROM user
INNER JOIN classes ON user.roll_number = classes.roll_number
AND classes.id IN #{id} ORDER BY(roll_number)
我在用户类中编写了作用域,基本上这些表都在db2数据库中,所以我编写了如下所示的作用域
scope :by_id, lambda { |id|
{ select("user.roll_number, first_name, last_name")
.joins("INNER JOIN classes ON (user.roll_number = classes.roll_number \
and classes.id = #{id})")
}
}
范围有问题吗?我收到“意外的关键字结束错误”
答案 0 :(得分:1)
如评论中所述,您需要删除{}
个大括号。我猜你看到的错误是因为:
{ select("...") }
被解释为哈希的实例化,密钥为select("...")
且没有值。 Ruby对你不满意。
您的后续行动:
如果我传递多个ID怎么办?我得到空列表,即使有id 1和id 2的记录。我在数组形式中传递id为id = [1,2]
你创建了一个SQL lambda,所以你可以使SQL工作。 [1,2]
的列表将如下所示:
INNER JOIN classes ON (user.roll_number = classes.roll_number
and classes.id = [1,2])
这会在你的SQL DB上运行吗?你不想使用and classes.id IN (1,2)
吗?