Я портирую php-приложение на rails, поэтому у меня есть набор SQL-операторов, которые я конвертирую в find_by_sql.Я вижу, что он возвращает коллекцию объектов того типа, который я вызывал для него.Что я хотел бы сделать, это перебрать эту коллекцию (предположительно, массив) и добавить экземпляр определенного объекта, например:
#class is GlobalList
#sql is simplified - really joining across 3 tables
def self.common_items user_ids
items=find_by_sql(["select gl.global_id, count(gl.global_id) as global_count from main_table gl group by global_id"])
#each of these items is a GlobalList and want to add a location to the Array
items.each_with_index do |value,index|
tmp_item=Location.find_by_global_id(value['global_id'])
#not sure if this is possible
items[index]['location']=tmp_item
end
return items
end
controller
#controller
@common_items=GlobalList.common_items user_ids
view
#view code - the third line doesn't work
<% @common_items.each_with_index do |value,key| %>
<%=debug(value.location) %> <!-- works -->
global_id:<%=value.location.global_id %> <!-- ### doesn't work but this is an attribute of this object-->
<% end %>
Итак, у меня есть 3 вопроса:
1. Является ли элементы массивом?Он говорит, что это через вызов .class, но не уверен
2. Я могу добавить местоположение этих элементов GlobalList.Однако в коде представления я не могу получить доступ к атрибутам местоположения.Как мне получить к этому доступ?
3. Я знаю, что это довольно уродливо - есть ли лучший шаблон для реализации этого?