[英]Selecting all current attributes of a model for validations in Rails
設置模型時,我經常發現自己在設置某些驗證時必須寫出其所有屬性。 一個常見的例子是當我使用presence
參數時:
validates :first_name, :last_name, :username, :email, presence: true
有沒有一種聰明的方法可以選擇所有屬性,而不必像在rails控制台中檢索它們一樣顯式地全部寫出它們?
User.columns
並將其作為參數傳遞給validates方法?
ALL_ATTRIBUTES = User.columns
validates ALL_ATTRIBUTES, presence: true
嘗試這樣的事情,我得到了這個錯誤undefined method 'to_sym'
這是一個可怕的主意。 但是您可以通過以下方式進行操作:
attrs = column_names.map { |column| column.to_sym }
validates *attrs, presence: true
為什么這是個壞主意? 因為還不清楚正在驗證什么。 它使調試變得困難,並可能導致您遇到奇怪的錯誤。 如果將來添加不需要進行狀態驗證的列,則會跳閘。 另外,有些事情我不需要出席。 例如,電子郵件字段將需要正則表達式驗證,該驗證會自動知道空白字符串無效。 因此,狀態驗證器是多余的。
提防自己太聰明了 ,因為有時候畢竟不是那么聰明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.