У меня есть 2 модели в моей рельсы приложение, один с UUID первичного ключа:Rails + UUID + жадная загрузка
class User < ActiveRecord::Base
belongs_to :country, :foreign_key => 'country_uuid'
end
class Country < ActiveRecord::Base
set_primary_key :uuid
has_many :users
end
Когда я пытаюсь что-то вроде этого:
<% @user = User.find :first, :include => [:country] %>
<%= @user.country.name %>
у меня есть хороший результат, но я вижу 2 запроса в файле журнала. Почему нетерпевая загрузка не работает, когда мы меняем ключ ID для ключа UUID?
User Load (0.4ms) SELECT `users`.* FROM `users` LIMIT 1
Country Load (0.4ms) SELECT `countries`.* FROM `countries` WHERE (`countries`.`uuid` = '1')
И я бы что-то вроде:
User Load (0.4ms) SELECT `users`.* FROM `users` INNER JOIN countries ON countries.uuid = users.country_uuid LIMIT 1
Есть обходной путь? Если я изменю ключ uuid для ключа id, но сохраните строковый формат для хранения uuid, будет ли это нормально?
Спасибо,
Спасибо. На самом деле, я пробовал со многими пользователями, и все в порядке: у меня есть 2 запроса для пользователей X. <% @users = User.find: all,: include => [: country]%> <% @ users.each do | user | %> <% =% user.country.name> <% end %> нагрузки пользователя (0.5мс) ВЫБОР 'users'. * FROM' users' Страна нагрузки (0,5 мс) ВЫБРАТЬ '' стран. * FROM '' стран WHERE ('countries' .'uu' IN ('1', '2')) –