Noz*_*Noz 1 ruby refactoring ruby-on-rails-3
所以我有以下代码,我想让它更具可读性:
user = User.find_by_username(username)
user = User.new(credentials) if user.nil?
Run Code Online (Sandbox Code Playgroud)
基本上第一行是默认行,如果尚未设置,则以下行将实例化自身.
有没有办法可以清理它并将其放到一行代码中?这样的事情可能是:
user = User.find_by_username(username) || User.new(credentials)
Run Code Online (Sandbox Code Playgroud)
编辑
我现在认识到我提供的代码不正是我需要的,对不起,浪费网络空间,但随时提出替代解决方案.
是的,你写的是完全正确的答案.
你也可以这样写,如果愿意的话:
user = User.find_by_username(username)
user ||= User.new(credentials)
Run Code Online (Sandbox Code Playgroud)
请记住,如果第一个是你的第一个例子将只分配了第二个值nil,但你的第二个例子以上我的例子将分配双方的第二个值nil和false.
编辑:正如其他人所提到的,如果您正在使用Active Record,您还可以使用基于动态属性的查找程序
user.find_or_initialize_by_username(credentials)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
655 次 |
| 最近记录: |