1
之間有什麼區別的瞬間:不二者的用戶創建一個新的即時不同的方法創建一個模型
user = User.new(name: "David", occupation: "Code Artist")
和
user = User.new do |u|
u.name = "David"
u.occupation = "Code Artist"
end
?
之間有什麼區別的瞬間:不二者的用戶創建一個新的即時不同的方法創建一個模型
user = User.new(name: "David", occupation: "Code Artist")
和
user = User.new do |u|
u.name = "David"
u.occupation = "Code Artist"
end
?
這裏有一個非常重要的區別。將散列傳遞給構造函數時,rails將此散列傳遞給assign_attributes
方法,該方法可以對此散列做一些魔術。
首先,在rails 4中,如果它沒有通過強屬性邏輯,它可以拒絕params散列(如果沒有,那麼它將工作正常)。在rails 3中,如果至少有一個參數未標記爲attr_accessible
,它將拒絕整個散列。
此外,assign_attributes
可以接受來自表單的複雜數據結構。即它會接受像date(3i), date(2i), date(1i)
這樣的參數,將檢查模型列date
。如果它發現它實際上是一個日期(數據庫列類型),它將從這些數據創建一個新的Date對象,並將分配它。
除非您直接撥打assign_attributes
,否則這些功能都不可用於塊代碼。
是的,他們都創建了一個新的「用戶」時刻。 – 2014-10-01 10:03:25