2009-11-11 63 views
7

我在我的ActiveRecord模型下面一行:PostgreSQL的,Rails和:爲了=>問題

class Record < ActiveRecord::Base 
    has_many :users, :through => :record_users, :uniq => true, :order => "record_users.index ASC" 

這是爲了讓我在我爲了使用索引的方式讀出record.users record_users模型中的字段。

的問題是,這種失敗在PostgreSQL上,出現以下錯誤:

ActionView::TemplateError (PGError: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list 

有沒有辦法解決,使其工作的聲明?

+0

你可以發佈生成的SQL? – 2009-11-11 17:30:49

回答

10

我想你可以把它稱爲ActiveRecord中的錯誤。 PosgreSQL比MySQL更有限制。您可以通過,而不是建立協會這樣助陣的ActiveRecord:

class Record < ActiveRecord::Base 
    has_many :users, 
    :through => :record_users, 
    :select => 'DISTINCT users.*, record_users.index', 
    :order => "record_users.index ASC" 
+0

你可以,因爲它。 MySQL在它所接受的內容上更寬容一些,並且是非標準的。 – MkV 2009-11-12 19:30:46

+0

我不明白 - 我的解決方案上面出現了什麼問題?我想知道,因爲我在我自己的Postgres上運行的項目中使用它) – 2009-11-13 08:25:33

+0

卡斯帕,我不認爲詹姆斯說這是一個糟糕的解決方案;-)另外,這是一個錯字 - DISTINCT? – cmaughan 2009-11-13 10:42:46

2

剛剛張貼在GitHub上軌的問題跟蹤這個問題(從燈塔票拷貝,所以我們可以把它帶回來..它被標記爲無效):

https://github.com/rails/rails/issues/520

提升,如果你想這很好地固定! :)