新手问题 请教一下这是什么语法啊

zkai · 发布于 2013年12月13日 · 最后由 sevk 回复于 2013年12月13日 · 1276 次阅读
9529
if options.fetch(:validations, true)
         validates_confirmation_of :password, if: :should_confirm_password?
         validates_presence_of     :password, on: :create
         validates_presence_of     :password_confirmation, if: :should_confirm_password?

         before_create { raise "Password digest missing on new record" if password_digest.blank? }
       end

if: :should_confirm_password?是什么意思啊?有这种语法吗?

共收到 11 条回复
2880

1.9 hash 语法, 相当于 :if => :should_confirm_password?

96

跟Ruby 2.0 以前 的这种写法是一样的

Before 2.0 :if => :password_required? After 2.0 if: :password_required?

96

但我觉得像 remote: true这种用新的写法简单明了 但像 :if => :should_confirm_password?这种,用老的方式写,更利于阅读.......

2973

都一样的啊,, true 和:should_confirm_password? 没有本质区别吧,都是一个ruby支持的类型,后面哪个可以当成symbol看就好了

9529

我知道那是Hash,但是if不是保留字吗,我在irb里试了a = {if:123},是错的。

2880

#5楼 @zkai 保留字在字符串或者符号中就不算保留字了. 你的 irb 用的 1.8 版本的 ruby ?

#2楼 @boyishwei 1.9 起就有了

9529

@luikore 晕,我的irb是0.9.6,我换一个试试。

681

a = {if: 123} 我这里也不行。估计只能用在函数的参数里面。

9529

我的ruby版本是1.9.2,在irb里不行,放到文件里,执行 ruby test.rb是可以的。

2880

#8楼 @sevk #9楼 @zkai irb 太老的关系? 用 pry 在 1.9.2 是没问题的

681

哦,果然 。。。 irb 不如 pry . irb 怎么升级呢?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册