在纯Ruby irb中,无法输入{if: 1}.声明不会终止,因为irb认为if不是符号,而是if语句的开头.
那么为什么Rails可以before_filter接受if作为参数呢?该指南的代码如下:
class Order < ApplicationRecord
before_save :normalize_card_number, if: :paid_with_card?
end
Run Code Online (Sandbox Code Playgroud)
同样的事情也发生了unless.