假设我们有一个用户模型,它有名字。我们可以简单地读写它:
user = User.new
user.name = "Peter Griffin"
user.name #=> "Peter Griffin"我们也可以通过属性散列(键是字符串)来实现:
user.attributes["name"] = "Peter Griffin"
user.attributes["name"] #=> "Peter Griffin"并使用其他一些奇怪的散列(这次键是符号):
user[:name] = "Peter Griffin"
user[:name] #=> "Peter Griffin"这两种方法的区别是什么?当我们需要使用散列而不是方法时,有没有特殊的情况?此外,我将感谢文档的链接,因为我没有找到关于属性的好文档。
发布于 2012-12-21 06:43:45
找到了关于这方面的好文章:http://www.davidverhasselt.com/2011/06/28/5-ways-to-set-attributes-in-activerecord/
发布于 2012-12-21 06:01:15
如果您正在使用,那么当您更新模型属性时,使用优先方式activerecord应该会在99%的时间内为您提供良好的服务
现在,如果您正在从头开始创建一个自定义模型,而不使用任何activerecord内容,那么您很可能会通过它的散列键来引用模型属性。那时候你的 there 就会派上用场了。当然,您可以修改自定义模型,使其工作方式与第一种方式类似。
当您想要引用所有模型散列时,返回模型属性散列的second way with attributes方法非常有用。例如,这将显示所有模型属性及其值。
@user.attributes.each do |attr, val|
puts "#{attr} : #{val}"
endhttps://stackoverflow.com/questions/13981044
复制相似问题