我有一個哈希值在哈希:我可以在散列中省略散列的大括號嗎?
validates :password,
length: { within: 5..30 },
presence: true
是否可以省略大括號中的哈希散列?這:
validates :password,
length: within: 5..30,
presence: true
引發語法錯誤。
我有一個哈希值在哈希:我可以在散列中省略散列的大括號嗎?
validates :password,
length: { within: 5..30 },
presence: true
是否可以省略大括號中的哈希散列?這:
validates :password,
length: within: 5..30,
presence: true
引發語法錯誤。
更準確地說,你在哈希文字中有一個哈希文字,恰好是方法調用中的最後一個參數。只有當哈希是方法調用中的最後一個參數時,纔可以省去大括號,因此它們在其他地方都是必需的。你的內部哈希值是另一個哈希文字中的值,這不是方法調用中的最後一個參數,所以不,你不能這樣做。
不幸的是(至少我知道),因爲長度需要多個參數,並期望散列作爲參數。我發現自己做的一件事是在我的config/constants.rb文件中初始化這些約束條件,因爲這些變量不會經常更改,我經常發現自己提供了多個長度參數。
配置/ constants.rb
MODEL_LENGTH_CONSTRAINT = {
within: 5..30,
too_short: "must have at least %{count} words",
too_long: "must have at most %{count} words"
}
應用程序/模型/ model.rb
validates :password,
length: MODEL_LENGTH_CONSTRAINT,
presence: true
我知道這不是真的你的問題的解決方案,但它是一個有點清潔IMO。快樂的編碼。
這些是大括號,而不是括號或制動器。 – sawa 2014-10-17 16:21:38
假設你有'h = {a:b,{c:d,e:f},{e:g}}'並且想要提取'f'和'g'的值,即'h [{c :d,e:f}] [:e]'和'h [{e:g}] [e]'。如果可以忽略括號,這將變成'h = {a:b,c:d,e:f,e:g}',但由於散列不能有重複的鍵,所以'e:f'或'e:g'將不得不去。即使最後的散列是'{h:g}',Ruby怎麼可能知道如何從'{a:b,c:d,e:f,h:g}'中提取鍵和值? – 2014-10-17 17:13:27