首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails order方法;列名称:order

Rails order方法;列名称:order
EN

Stack Overflow用户
提问于 2012-07-09 05:45:38
回答 4查看 3.9K关注 0票数 4

我有一个模型练习,它有:circuit和:order (以及其他)列。在一个视图中,我尝试先按:circuit对练习进行排序,然后按:order进行排序。当我使用以下命令时:

代码语言:javascript
复制
@schedule.exercises.order(:circuit).each do |exercise|

它的工作方式与预期一致。但是,当我尝试添加:order列时:

代码语言:javascript
复制
@schedule.exercises.order(:circuit, :order).each do |exercise|

我得到以下错误:

代码语言:javascript
复制
SQLite3::SQLException: near "order": syntax error: SELECT "exercises".* FROM "exercises"  WHERE "exercises"."schedule_id" = 1 ORDER BY circuit, order

当我单独传递:order列时,也会发生同样的错误:

代码语言:javascript
复制
@schedule.exercises.order(:order).each do |exercise|

SQLite3::SQLException: near "order": syntax error: SELECT "exercises".* FROM "exercises"  WHERE "exercises"."schedule_id" = 1 ORDER BY order

我假设这是因为列名(:order)与SQL方法名(order)相同。我想知道除了更改我的专栏标题之外,是否还有其他方法可以解决这个问题?

谢谢,斯图尔特

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-09 06:06:51

其中,更改列名是唯一明智的选择。将其更改为类似于"position“的内容。

票数 8
EN

Stack Overflow用户

发布于 2012-07-09 05:58:19

如果您确实想尝试这样做,您可以编写一个find by sql查询,并用后引号转义列名称,如下所示

代码语言:javascript
复制
ModelName.find_by_sql(SELECT * FROM ModelName ORDER BY '`order`')

但我建议您只需更改列名即可

票数 0
EN

Stack Overflow用户

发布于 2016-09-22 03:39:16

我也面临着同样的问题,但在order子句中指定表名是可行的。

代码语言:javascript
复制
@schedule.exercises.order("exercises.circuit ASC, exercises.order ASC").each do |exercise|
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11386975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档