У меня есть модель сделки с большим количеством ассоциаций. Одна из ассоциаций - Валюта. Таблица сделок и таблица валют имеют столбец имен. Теперь у меня есть следующий запрос: ActiveRecordКак работает «select column as»?
Deal.
joins(:currency).
where("privacy = ? or user_id = ?", false, doorkeeper_token.resource_owner_id).
select("deals.name as deal_name, deals.date as deal_creation_date, deals.amount as deal_amount, currencies.name as currency_name, currencies.symbol as currency_symbol")
Этот запрос не работает, его результатом является массив Deal объектов без атрибутов. По словам кого-то из IRC, части «как» неверны, потому что ORM не знает, как назначить столбцы, для которых атрибут (или что-то в этом роде) является достаточно справедливым. Я попытался добавить attr_accessor и attr_accessible, но это не сработало.
Как я могу выполнить вышеуказанный запрос, пожалуйста? Я ожидаю, что результатом будет объект Array of Deal с deal_name
, deal_creation_date
и т. Д. Виртуальными атрибутами.
Хорошо, что работает для меня. За исключением ассоциаций/объединений. Например, возьмите этот запрос: «Deal.joins (: currency) .where (« deals.privacy =? Или deals.user_id =? », False, 4) .select (« deal.name as deal_name, deals.date as deal_date, deals.amount как deal_amount, currencies.symbol как валюта "). as_json'. В этом примере 'currency' является' nil', хотя он не должен быть (поскольку он имеет значение в БД). Однако его значение является особым символом. Это проблема? –
Возможно, особые символы вызывают проблему с валютой. Вы можете попробовать поставить '# encoding: UTF-8' в верхней части файла. [Вот пример] (http://stackoverflow.com/a/6916663/1450420) того, кто решает, что может быть аналогичной проблемой. –
Я не понимаю, что все работает нормально, если я не использую «как "в предложении select (включая специальный символ в json). Поэтому я сомневаюсь, что источником проблемы являются специальные символы ... –