我正在撰寫自己的 ERP。對于People(模型類)我有以下驗證:
class People < ApplicationRecord
# some code for N:M relations
# validations
validates :aka, presence: { if: proc { |person| person.aka? } },
uniqueness: true,
length: { within: 3..25,
if: proc { |person| person.aka? } }
validates :last_name, presence: { if: proc { |person| person.last_name? } },
uniqueness: { scope: %i[last_name first_name] },
length: { within: 2..100,
if: proc { |person| person.last_name? } }
validates :phone_ext, presence: { if: proc { |person| person.phone_ext? } },
length: { within: 1..10,
if: proc { |person| person.phone_ext? } },
format: { with: /\A\d{1,10}\Z/i,
if: proc { |person| person.phone_ext? } }
validates :first_name, presence: true,
uniqueness: { scope: %i[last_name first_name] },
length: { within: 2..100 }
end
正如您在所有if: proc { ....行中看到的那樣,它們幾乎是相同的東西。并且更快地知道它,這就是為什么我在塊內呼叫無引數方法比使用符號來處理訊息要慢。
現在,一整天都沒有成功,我整天都在想辦法解決這個 Fasterer 的資訊。我已經嘗試過 lambdas、閉包、&:、->,所以我放棄了。
有任何想法嗎?
uj5u.com熱心網友回復:
這指的是,例如,a.map(&:foo)比 快a.map { |o| o.foo }。
在這種情況下,validates將取一個方法名作為符號進行檢查。例如,if: :aka?而不是if: proc { |person| person.aka? }
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/445710.html
上一篇:Textmate乳膠編譯:macOS更新Monterey12.3后帶有python版本的pb
下一篇:for...的迭代器而不關閉它
