我正在我的 Controller 操作之一中搜索用户。有时,params[:user_id] 将为 nil,在这种情况下,搜索应该产生 current_user。以下两种搜索方法似乎产生相同的结果
@user = User.find(params[:user_id]||=current_user)
和
@user = User.where('id = ?', params[:user_id]).first || current_user
问题是:
1) 哪种搜索方法更合适,以及 2) 如果 params[:user_id] 为 nil,是否有办法一起绕过搜索?
我确定我可以想出一个 if/else 语句来完成第 2 行,但我觉得这有点老套。但是,也许不是?
谢谢!
最佳答案
这是三元运算符的完美位置
@user = params[:user_id] ? User.find(params[:user_id]) : current_user
我想补充一点。
I'm sure I could come up with a if/else statement to accomplish line 2 but that
feels hackish to me. But, maybe it's not?
许多开发人员喜欢使用流畅的一行而不是更具可读性的 if/else
控制流来获得可爱。 我也这样做!
在编写代码时,请记住可读性远比流畅的一行代码重要。话虽如此,您的具体示例是使用三元运算符的好地方,但替代方案 if/else
也是可以接受的。 Ruby 甚至可以让它比其他一些语言更酷。
@user = if params[:user_id]
User.find(params[:user_id])
else
current_user
end
关于ruby-on-rails - Active Record 查询 - 如果提供 nil 值则查找的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15386734/