Sim*_*nas 1 ruby ruby-on-rails
我正在关注迈克尔·哈特尔的ruby on rails教程,我不知道他如何使用赋值运算符如果condintion:
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
end
Run Code Online (Sandbox Code Playgroud)
有人可以解释它背后的逻辑吗?
这是Ruby中的一种语法糖.
Ruby允许您在条件中分配变量并返回值
x = true #=> returns true
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
end
Run Code Online (Sandbox Code Playgroud)
相当于
user_id = session[:user_id]
if user_id
@current_user ||= User.find_by(id: user_id)
end
Run Code Online (Sandbox Code Playgroud)
为您节省一条线.如果session[:user_id]是假的,它会将false值赋给user_id并且不执行该块.