首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在红宝石中发送||=?

问如何在红宝石中发送||=?
EN

Stack Overflow用户
提问于 2017-05-05 20:46:12
回答 1查看 167关注 0票数 1

我有一个模型,我想从传递的散列中将默认值赋给它。

代码语言:javascript
复制
def assign_defaults(attr={})
   self.attributes.keys.each do |x|
      send("#{x} ||=", attr[x])
   end
end

但是它引发了一个例外:undefined method 'id ||=' for #<Model..>

我也试过send("#{x}.||=", attr[x]),doens也不能工作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-06 05:52:59

在Ruby中,||=是关键字,而不是方法。因此,您不能将其发送到对象。

在Rails中,您可以使用括号符号访问模型属性,这样您就可以编写代码:

代码语言:javascript
复制
def assign_defaults(attr = {})
  self.attributes.keys.each do |x|
    self[x] ||= attr[x]
  end
end
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43813506

复制
相关文章

相似问题

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