2017-01-03 2 views
0

Я использую Gem active_hash https://github.com/zilkey/active_hash для создания моделей для простых данных, для которых я не хочу создавать таблицы БД.Не удается получить доступ к данным в ActiveHash

К примеру, у меня есть эта настройка модели для FieldTypes:

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.

Вы можете, однако, определить свой собственный pluck на своей модели 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

Без проблем! Счастлив, что ты заработал! –

Смежные вопросы