[英]How does Ruby on Rails work with an “inclusion” validation?
我正在使用Ruby on Rails v3.0.9,並且在我的模型中有以下代碼:
class User < ActiveRecord::Base
validates :users_role,
:inclusion => {
:in => UserRole.all.map(&:role)
},
:presence => true
end
當我瀏覽與UserRole相關的頁面(即涉及用戶對象實例的頁面-例如,RoR常規的“顯示”或“索引”視圖)時,我檢查了日志文件,發現UserRole SQL查詢被執行。 即, UserRole.all.map(&:role)
運行。
我想知道Ruby on Rails在上述情況下如何工作。 它關系到性能嗎? 是UserRole.all.map(&:role)
延遲加載嗎?
在您的開發環境中,您可能會看到該查詢在驗證用戶的任何請求上運行,因為每個請求都重新加載了代碼。 只需在生產模式下嘗試一次,就不會發生這種情況,因為代碼僅加載一次,並且您沒有將查詢放入lambda中。 由於您已經在結果集上調用map
,因此這里不應有延遲加載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.