2011-02-08 51 views
0
沒有問題

我在application_helper.rb文件以下兩個ActiveRecord的查詢:問題與MySQL查詢數據的ActiveRecord/Rails的排序 - SQLite中

@left_menu = Page.select( '身份證,MENU_NAME' )。凡(:發佈=>真,:left_menu =>真).order( 「分類」)

也可以寫爲:

@left_menu = Page.select( '編號,MENU_NAME') (:published => true,:left_menu => true).order(''sort'ASC「)

and:

@left_menu = Page.find(:所有,:條件=> {:發佈=>真,:left_menu => TRUE},:爲了=>:排序)

爲什麼第一個不排序'排序'列,而第二個不是?兩者都在SQLite中工作,但只有第二個在MySQL中工作。

任何想法?

+0

MySQL不能有默認的排序方向,這是可以理解的。 – qpingu 2011-02-08 21:56:42

回答

1

這是它的順序params引用。
生成將查詢(類似於)

"SELECT id, title FROM `pages` WHERE (`pages`.`pub` = 1) ORDER BY 'sort' ASC" 

其炭報價。這是錯誤的SQL語法,它將按照costant值而不是列值進行排序。 sqlite允許它,MySQL不是。
儘量簡單使用

Page.select('id, menu_name').where(:published => true, :left_menu => true).order("sort ASC") 

而不在順序鏈方法參數單引號。

對不起,我的英語。 祝您有個愉快的日子