2017-01-03 24 views
0

私はGem active_hash https://github.com/zilkey/active_hashを使用して、DBテーブルを作成したくない単純なデータのモデルを作成しています。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 

をしかし、私は注文のエラーを取得

例えば、私はFieldTypesのためにこのモデルを設定しています、収集または摘出は定義されていません。

このデータにアクセスするにはどうすればよいですか?これは他のモデルでもうまく動作しますが、ActiveHashモデルではうまく動作しません。ドキュメントによると、モデルはActiveRecordと同じように動作するはずですが、私は同じようにアクセスすることはできないようです。 FieldType.allが動作しますが、他の方法では動作しません。

答えて

2

ActiveHash::Baseには、ピンポイントが定義されていません。これはActiveRecord::Relation::Calculationsで定義されており、指定する列のSQL selectを生成することが目的です。 ActiveHashで動作させることはできません。

FieldTypeモデルで定義できます。

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

問題ありません!あなたはそれが働いてうれしい! –

関連する問題