Ruby on rails 创建模型瞬间的不同方法
以下两者之间的区别是什么:Ruby on rails 创建模型瞬间的不同方法,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,以下两者之间的区别是什么: user = User.new(name: "David", occupation: "Code Artist") 及 它们不是都创造了一个新的即时用户吗?这里有一个非常重要的区别。当您将散列传递给构造函数时,rails将该散列传递给assign\u attributes方法,该方法可以对该散列进行一些处理 首先,在rails 4中,如果没有通过强属性逻辑,它可以拒绝params散列(该散列受污染,否则可以正常工作)。在rails 3中,如果至少有一个参数未标记为a
user = User.new(name: "David", occupation: "Code Artist")
及
它们不是都创造了一个新的即时用户吗?这里有一个非常重要的区别。当您将散列传递给构造函数时,rails将该散列传递给
assign\u attributes
方法,该方法可以对该散列进行一些处理
首先,在rails 4中,如果没有通过强属性逻辑,它可以拒绝params散列(该散列受污染,否则可以正常工作)。在rails 3中,如果至少有一个参数未标记为attr\u accessible
,它将拒绝整个哈希
此外,assign\u attributes
可以接受表单中的复杂数据结构,它们来自表单。也就是说,它将接受诸如date(3i)、date(2i)、date(1i)
之类的参数,并将检查模型列date
。如果它发现它实际上是一个日期(数据库列类型),它将根据这些数据创建一个新的日期对象,并将其分配
除非直接在块代码中调用
assign\u attributes
,否则这些功能都不适用于块代码 是的,它们都创建了一个新的User
瞬间。
user = User.new do |u|
u.name = "David"
u.occupation = "Code Artist"
end