2

假设我们有 User 模型并且它有名字。我们可以简单地读写它:

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"

这些方法有什么区别?当我们需要使用哈希而不是方法时,是否存在特殊情况?另外我会感谢文档链接,因为我没有找到关于属性的好的文档。

4

2 回答 2

1

找到关于此的好文章:http ://www.davidverhasselt.com/2011/06/28/5-ways-to-set-attributes-in-activerecord/

于 2012-12-20T22:43:45.050 回答
-2

如果您使用的是 activerecord,则在更新模型属性时,使用第一种方式应该可以在 99% 的情况下为您服务

现在,如果您在不使用任何 activerecord 的情况下从头开始创建自定义模型,您很可能会通过它的哈希键来引用模型属性。那时,您在上面的第三种方式将派上用场。当然,您可以修改自定义模型以像第一种方式一样工作。

当您想要引用所有模型散列时,返回模型属性散列的方法的第二种方法很有用。attributes例如,这将包含所有模型属性及其值。

@user.attributes.each do |attr, val|
  puts "#{attr} : #{val}"
end
于 2012-12-20T22:01:15.300 回答