2017-01-03 116 views
0

我正在使用Gem active_hash https://github.com/zilkey/active_hash爲簡單數據創建模型,我不想爲其創建數據庫表。無法訪問ActiveHash中的數據

例如,我有域類型這個模型建立:

class FieldType < ActiveHash::Base 
    self.data = [ 
     {:id => 1, :name => "text", :friendly_name => "Text"}, 
     {:id => 2, :name => "textarea", :friendly_ => "Text Area"}, 
     {:id => 3, :name => "image", :friendly_ => "Image"}, 
    ] 
end 

而且我想列出一個選擇這些字段類型:

def field_types_for_select 
    #FieldType.all.order('name asc').collect { |t| [t.friendly_name, t.name] } 
    FieldType.pluck(:friendly_name, :name) 
end 

但我得到一個錯誤的順序,收集或採摘沒有定義。

如何訪問此數據?這適用於其他模型,但不是ActiveHash。根據文檔,模型應該和ActiveRecord一樣工作,但我似乎無法像訪問它一樣。 FieldType.all工程,但其他方法不。

回答

2

Pluck未在ActiveHash::Base上定義。它在ActiveRecord::Relation::Calculations上定義,其目的是爲您指定的列生成SQL選擇。您將無法使其與ActiveHash配合使用。

但是,您可以在您的FieldType模型上定義自己的pluck

def self.pluck(*columns) 
    data.map { |row| row.values_at(*columns) } 
end 

或者直接查詢數據:

FiledType.data.map { |row| row.values_at(:friendly_name, :name) } 
+0

沒關係啊感謝。這看起來很有用! – Cameron

+0

沒問題!快樂你得到它的工作! –