首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ActiveRecord属性读取和写入

ActiveRecord属性读取和写入
EN

Stack Overflow用户
提问于 2012-12-21 05:47:04
回答 2查看 3K关注 0票数 2

假设我们有一个用户模型,它有名字。我们可以简单地读写它:

代码语言:javascript
运行
复制
user = User.new
user.name = "Peter Griffin"
user.name #=> "Peter Griffin"

我们也可以通过属性散列(键是字符串)来实现:

代码语言:javascript
运行
复制
user.attributes["name"] = "Peter Griffin"
user.attributes["name"] #=> "Peter Griffin"

并使用其他一些奇怪的散列(这次键是符号):

代码语言:javascript
运行
复制
user[:name] = "Peter Griffin"
user[:name] #=> "Peter Griffin"

这两种方法的区别是什么?当我们需要使用散列而不是方法时,有没有特殊的情况?此外,我将感谢文档的链接,因为我没有找到关于属性的好文档。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-21 06:43:45

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

票数 1
EN

Stack Overflow用户

发布于 2012-12-21 06:01:15

如果您正在使用,那么当您更新模型属性时,使用优先方式activerecord应该会在99%的时间内为您提供良好的服务

现在,如果您正在从头开始创建一个自定义模型,而不使用任何activerecord内容,那么您很可能会通过它的散列键来引用模型属性。那时候你的 there 就会派上用场了。当然,您可以修改自定义模型,使其工作方式与第一种方式类似。

当您想要引用所有模型散列时,返回模型属性散列的second way with attributes方法非常有用。例如,这将显示所有模型属性及其值。

代码语言:javascript
运行
复制
@user.attributes.each do |attr, val|
  puts "#{attr} : #{val}"
end
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13981044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档