2013-07-16 5 views
0

Я хотел бы использовать ключи hstore в качестве заголовков столбцов таблицы. Мой подход состоит в том, чтобы просто сопоставить запрос на рельсы, который будет возвращать все ключи из нескольких записей, а затем распечатать элементы uniq в массиве.Возвращает массив ключей uniq из запроса данных hstore в rails

Я буду строить таблицу в креветке, используя как статические, так и динамические заголовки столбцов ... как это ... но это не работает, конечно.

[["DATE", "LOCATION", "DAY OFF", "START", "END" + @users_options.select("properties").map { |k,v| ",#{k}" }]] 

Как я могу перебирать журналы пользователей и выводить только ключи uniq?

Я просто попытался это ... кажется близко ... но пока не работает

a = [] 
user.useroptions.select(:properties).collect{ |k,v| a << k } 
+0

Его легко получить ключи от одной записи @ users_options.keys .... но, получение ключей из нескольких записей не так просто. – hellion

+0

Одна вещь, которую я мог бы сделать ... Простая петля через записи и объединить все хэш-хэши в один хэш ... не уверен, как это сделать, не будучи разрушительным. Затем получите ключи uniq из одного хэша. – hellion

ответ

0

Я создал вспомогательный метод:

def keys(user) 
    keys = [] 
    user.useroptions.select(:properties).each do |opt| 
    a = opt.properties.keys 
    keys << a 
    end 

    keys.flatten.uniq 
end 

This перебирает через все hstore записей, хватает ключи , затем выравнивает хэш и ставит только значения uniq

+0

Теперь проблема, с которой я столкнулась, - это возвращаемые значения ключей - это массив. Мне нужно каким-то образом внедрить этот массив в статические значения, которые уже находятся в статическом массиве ... без разбиения массива. – hellion

0

Чтобы закончить это, я переместил элементы статического массива в помощник и использовал метод «unshift» ... чтобы я выплюнул один массив к креветке построитель таблиц.

def keys(user) 
    keys = [] 
    user.useroptions.select(:properties).each do |opt| 
    a = opt.properties.keys 
    keys << a 
end 

keys.flatten.uniq 

конец

keys.flatten.uniq.unshift("DATE", "LOCATION", "DAY OFF", "START", "END") 

тогда я сойду мой помощник в к столу Креветки

[keys(@users_logs)] + 

    ....table rows