2014-02-27 99 views
1

我想從表中摘取一列。該命令似乎失敗,因爲我的列名稱是駝峯式(practiceType)。這裏是我的錯誤,模型和模式:如何摘取駱駝案例列

> Task.pluck 'practiceType' 
    (0.5ms) SELECT practiceType FROM "tasks" 
PG::Error: ERROR: column "practicetype" does not exist 
LINE 1: SELECT practiceType FROM "tasks" 
      ^
: SELECT practiceType FROM "tasks" 
ActiveRecord::StatementInvalid: PG::Error: ERROR: column "practicetype" does not exist 

task.rb

class Task < ActiveRecord::Base 
    attr_accessible :name, :practiceType 
[...] 

schema.db

create_table "tasks", :force => true do |t| 
    t.string "name" 
    t.string "practiceType" 
    [...] 

正確的解決方案可能是列名轉換變成蛇的情況下,但我更喜歡避免這種情況,因爲害怕打破我的應用程序。是否有一個快速和骯髒的解決方案,將讓我的查詢運行?

+0

您可能能夠使用別名,即'別名 「practiceType」, 「practicetype」'(或逆轉,不知道),我讀到這裏:http://stackoverflow.com/questions/5822257/ruby​​-on-rails-is-it-it-it-it-use-came-cased-database-field-and-table-names –

+1

[This post](http://lexsheehan.blogspot.com/2013/04/ how-to-reference-camelcase-column-names.html)建議雙引號列名稱。 –

回答

5

這很奇怪。

試試這個。似乎工作正常。

Task.pluck('"practiceType"') 
+0

第一種方法工作:'> Task.pluck'「practiceType」' (0.5ms)SELECT「practiceType」FROM「tasks」' – jkrmr

+0

Super。謝謝。 :) –