Ruby on rails Ruby&&;陈述
我的应用程序_controller.rb中有以下内容Ruby on rails Ruby&&;陈述,ruby-on-rails,ruby,Ruby On Rails,Ruby,我的应用程序_controller.rb中有以下内容 def layout unless request.subdomain.empty? && current_user.nil? self.class.layout 'admin' end end 上面的代码似乎不起作用。但是当我做下面的事情时,它确实起作用了 def layout unless request.subdomain.empty? unless current_user.nil?
def layout
unless request.subdomain.empty? && current_user.nil?
self.class.layout 'admin'
end
end
上面的代码似乎不起作用。但是当我做下面的事情时,它确实起作用了
def layout
unless request.subdomain.empty?
unless current_user.nil?
self.class.layout 'admin'
end
end
end
我想通过删除一条语句来简化代码。我怎么能这样做呢?
除非某个东西相当于如果!一些东西
。对你来说,那就是
if !(request.subdomain.empty? && current_user.nil?)
然而,你想要
if (!request.subdomain.empty? && !current_user.nil?)
使用布尔代数(De Morgan规则),您可以将其重写为
if !(request.subdomain.empty? || current_user.nil?)
除非
unless request.subdomain.empty? || current_user.nil?
如果要将布局设置为
'admin'
如果子域为非空,当前用户为非零:
def layout
if !request.subdomain.empty? && !current_user.nil?
self.class.layout 'admin'
end
end
将逻辑更改为使用if
语句和肯定谓词,这将使代码中的逻辑更容易理解:
def layout
if request.subdomain.present? && current_user
self.class.layout "admin"
end
end
最佳做法是避免,除非
,除非是在最琐碎的情况下。使用:
if (!request.subdomain.empty? && !current_user.nil?)
我从不使用,除非
处理更复杂的内容(包含或/和),否则很难对这样的语句进行推理