Локально я использую MySQL и удаленно использую PostgreSQL (на Heroku) и получаю разные результаты.
контроллер
@customer = current_customer
@shows = @customer.shows
@musicals = Musical.find(:all, :conditions =>['show_id in (?)', @shows])
@musicals.each do |musical|
@musical_activities = Activity.where('musical_id in (?)', musical.id).count(:group => "activity_type_id")
end
view
<table>
<tr>
<th>Activity</th>
<th>Number</th>
</tr>
<% @activities.each do |activity_id, count| %>
<tr>
<td><%= activity_description(activity_id) %></td>
<td><%= count %></td>
</tr>
<% end %>
</table>
Ранее я использовал = вместо in, но я изменил его, потому что я получал PGError, говорящий, что аргумент WHERE должен иметь тип boolean, а не type record.Независимо от того, использую я = или IN, я получаю правильные результаты локально.
Когда я запускаю его на Heroku и заменяю = на IN, ошибка исчезает, но результат неверен.Я просто получаю одну строку, в которой первый столбец (activity_description) пуст, и вместо того, чтобы показывать мне счетчики по видам деятельности, счет либо агрегируется, либо отображается только один тип деятельности.Т.е. появляется только одна строка, хотя у меня много типов activity_ty, и одна строка не возвращала идентификатор activity_id.