Swa*_*rla 1 sql database-design ruby-on-rails
我只是在数据库中已存在变量tagcolor的情况下尝试分配它.如果颜色存在,此代码查询DB两次,确定它是否确实存在,另一次查询实际分配它.
如果它不存在我只想将tagcolor分配给用户提供的颜色.
if Tagmap.where("name = ? AND user_id = ?", tag, current_user.id).first.present?
tagcolor = Tagmap.where("name = ? AND user_id = ?", tag, current_user.id).first.color
else
tagcolor = params[:color].downcase
end
Run Code Online (Sandbox Code Playgroud)
我可以减少这个块,所以我只查询一次DB吗?
如果您使用的是Rails 4,则可以执行以下操作:
tagcolor = Tagmap.find_by(name: tag, user: current_user).try(:color) || params[:color].downcase
Run Code Online (Sandbox Code Playgroud)
在Rails 3中可以实现类似(但不是那么漂亮)的构造:
tagcolor = Tagmap.find_by_name_and_user(tag, current_user).try(:color) || params[:color].downcase
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28 次 |
| 最近记录: |