params[:user][:role_ids] ||= []
它做了什么?
ruby -v = 1.9.2p290
答案 0 :(得分:5)
如果[]
为params["user][:role_ids]
或其他有价值的值,则params["user][:role_ids]
会将nil
分配给params["user][:role_ids]
否则,它会保留原始值variable = nil
variable ||= "string"
puts variable # "string"
variable2 = "value"
variable2 ||= "string"
puts variable2 # "value"
示例强> 的
{{1}}
答案 1 :(得分:2)
如果params[:user][:role_ids]
为nil
,则会使用[]
进行初始化,否则params[:user][:role_ids]
会保持其值
答案 2 :(得分:1)
如果尚未指定左侧值,请将其指定给右侧值。如果已分配,请将其保留为自身。迈克尔哈特尔的RoR tutorial site可以找到一个很好的解释。
答案 3 :(得分:1)
它是memoize运算符,它执行以下两项操作之一:
答案 4 :(得分:1)
Ruby中的条件赋值。您可以在此处详细了解:Ruby Operators
答案 5 :(得分:1)
如果尚未设置变量,则为变量设置值。含义
class Something
attr_accessor :some_value
def perform_action
@some_value ||= "Mom"
puts @some_value
end
foo = Something.new
foo.perform_action -> "Mom"
foo.some_value = "Dad"
foo.perform_action -> "Dad"