Таким образом, у меня есть иерархия схемы, как это:Загрузка данных из нескольких таблиц
Organization > Program >RegistryPatientCount
так RegistryPatientCount держит program_id
поле для доступа к Program
таблице. (Скажем, это также имеет Имя столбец, для как название программы, и т.д ..)
Program
таблица сохраняет organization_id
поле для доступа к Organization
таблице.
Тогда в моем controller#show
метода у меня есть что-то вроде этого:
respond_to :json
def show
#TODO: Pagination.
@blah = Program.includes([:registry_patient_counts]).where(organization_id: params[:id])
respond_with(@blah)
end
* Примечание:. ИД паров будут organization_id *
Когда я запускаю это, он возвращает данные из Program
таблицы , но я хотел, чтобы он возвращал данные из таблицы RegistryPatientCount
, и следующим шагом было бы иметь возможность сверлить в таблицу программ, и вместо program_id будет отображаться имя из таблицы программ.
Но ничего не работает, как я уже сказал, он просто возвращает данные таблицы программ для данной организации.
, но у меня есть и включает в registry_patient_counts первый вызов и присвоение его @blah ... зачем мне переделывать его в response_with? – 2013-02-28 20:38:15
Я уже сказал вам в своем ответе ... Прочтите еще раз: 'Program.includes (...)' = ActiveRecord и 'response_with (..., include:)' = рендеринг JSON. Это две разные вещи. Первым из них является оптимизация запроса к базе данных (поиск «загружаемой загрузки»: http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations), а второй - о том, как будет выглядеть результирующий JSON (= какие данные он будет включать). –
Хорошо имеет смысл ... так что, вероятно, лучший способ - использовать JBUILDER и разобрать и массировать, что @blah возвращается и использовать его. – 2013-02-28 21:03:28