ruby-on-rails - Active Record 语法解释 - 初学者

标签 ruby-on-rails ruby

我目前正在学习 ruby​​/rails - 我正在阅读的这本书倾向于跳过一些新语法。特别是这一点;

person = Person.find(:first, :conditions => ["name = ?", "Mikey"])

据我所知,此方法将一个符号作为其第一个参数,它看起来像一个带有符号/数组键/值的单项散列。这是正确的吗?如果是这样,为什么我突然能够在这种情况下指定没有花括号 {} 的散列?

最佳答案

在 Ruby 方法参数中,任何放置在普通参数之后但在 block 之前的键=>值对都被捆绑到一个散列中。所以如果你打电话

my_method("hello", :something=>"yo!", :another_thing=>"bah!")

这意味着 my_method 被传递了两个参数,一个字符串 ("hello") 和一个散列 ({:something=>"yo!", :another_thing=>"bah!"}).

除其他原因外,这可以防止混淆表示散列参数的大括号和表示 block 的大括号。它还提供了一种方便的方式来模拟“命名参数”,否则这些参数在 Ruby 中是不存在的。

关于ruby-on-rails - Active Record 语法解释 - 初学者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8142105/

相关文章:

ruby-on-rails - heroku登录无法验证第一个证书

html - 如何使图像轮播工作?

ruby-on-rails - 重新启动 shell Ubuntu 16 后找不到 RVM 安装的 ruby

ruby-on-rails - 为什么这个 parse.com rest api 请求失败了?

ruby-on-rails - 使用橡胶部署后,Rails 控制台无法在 ec2 上运行

ruby-on-rails - 如何配置设备接受 HTTP header 中的身份验证 token ?

ruby-on-rails - 如何使用 curl CLI 将文件上传到我的 ruby​​ on rails 应用程序?

ruby - ruby 中的keyword_end 和 end-of-input 有什么区别?

ruby - 使用 RSpec 通过获取测试用户输入

arrays - 从数组中获取对象