1
我有2種型號在我的Rails應用程序,一個帶有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個請求。當我們更改UUID密鑰的ID密鑰時,爲什麼預先加載不起作用?
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
有沒有解決辦法? 如果我更改id密鑰的uuid密鑰,但保留字符串格式以存儲uuid,它會好嗎?
感謝,
謝謝你的事實。 事實上,我嘗試了很多用戶,沒關係:我對X用戶有2個查詢。 <%@users = User.find:all,:include => [:country]%> <%@ users.each do | user | %> <%= user.country.name%> <% end %> 用戶負載(0.5毫秒)SELECT`users`。* FROM`users` 國家負荷(0.5毫秒)SELECT`countries`。* FROM`countries` WHERE(`countries`.`uuid` IN('1','2')) – 2011-12-16 16:39:08