簡體   English   中英

Ruby on Rails如何與“包含”驗證一起使用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM