草庐IT

condition-statement

全部标签

ruby - 什么是 Replace Conditional with Polymorphism 重构?它是如何在 Ruby 中实现的?

我最近在要求消除ruby​​中的if..else条件时遇到了用多态性重构替换条件。thelink任何人都可以向我解释我如何在ruby​​中实现相同的功能吗?(一个简单的甜蜜代码就可以) 最佳答案 ReplaceConditionalwithPolymorphismRefactoring非常简单,而且几乎就是它听起来的样子。您有一个带有如下条件的方法:defspeedcase@typewhen:europeanthenbase_speedwhen:africanthenbase_speed-load_factor*@number_of

ruby-on-rails - rails 2.3 : How to turn this SQL statement into a named_scope

弄清楚如何从这个SQL查询创建一个named_scope有点困难:select*fromfoowhereidNOTIN(selectfoo_idfrombar)ANDfoo.category=?按RAND()限制1排序;类别应该是可变的。针对上述问题编写命名范围的最有效方式是什么? 最佳答案 named_scope:scope_name,lambda{|category|{:conditions=>["idNOTIN(selectfoo_idfrombar)ANDfoo.category=?",category],:order=>'

Ruby 三元 - 警告 : string literal in condition

此代码按预期工作:ifphrase.last.eql?"?"?true:falsetrueelsefalseend但是这段代码使用了Ruby三元运算符:phrase.last.eql?"?"?true:false出现以下错误:warning:stringliteralincondition我是否需要以某种方式转义"?"? 最佳答案 没有括号,ruby将其解释为phrase.last.eql?("?"?true:false)它解释了消息“警告:条件中的字符串文字”。要解决此问题,请在参数上使用括号:phrase.last.eql?("

ruby-on-rails - Ruby on Rails : If you have 50 if-else statements in your after_create action, 会减慢您的应用程序吗?

使用50个if-else语句对于一项操作来说是否过于耗费资源?我正在做这样的事情:ifteam.players.count>1assign_team_type(..)elsifteam.players.count>3assign_team_type(..)...etc....end此外,将50个if-else语句放在Controller内的create操作中而不是after_create方法是否更有效?还是改用caseswitch语句或完全避免使用它会更有效?编辑:感谢您的快速回复!该代码用于社区体育锦标赛,根据该队的球员人数分配球队。我正在尝试编写一些东西,根据添加到该团队的玩家数量

ruby - 是否可以结合 with_options 和 :if for conditional validations?

我正在尝试使用with_options为管理员用户将我的条件验证组合在一起。对用户名唯一性的第二次验证最终覆盖了with_options条件。有更好的方法吗?或者我应该忘记with_options并编写两个单独的语句?with_options:if=>Proc.new{|user|user.admin?}do|admin|admin.validates:email,:presence=>trueadmin.validates:username,:uniqueness=>true,:if=>Proc.new{|user|user.category=="customized_usernam

ruby-on-rails - Rails 2.3.5 - ".find"函数不适用于 ( :condition = >"date") option

我想做的是查找过去60天内使用过的特定记录。我正在使用Oracle(9i),railsv:2.3.5,rubyv:1.8.7我定义日期间隔的代码是:date=(((Time.now-60.days).strftime("%d-%b-%y"))...(Time.now.strftime("%d-%b-%y")))下面是我如何使用它:conditions={}conditions[:start_date]=dateconditions[:account_no]=account_numberresults=MyModel.find(:all,:conditions=>conditions)要

ruby - SQLite3::Database 和 SQLite3::Statement 的初始化方法在哪里

我是一位经验丰富的程序员,正在学习Ruby(并且非常喜欢它)。我正在使用SQLite3设置数据库。为了更好地学习Ruby,我正在跟踪SQLite3。我不明白的是,数据库和语句类的#new代码在哪里。实际上,我期望的不是#new方法,而是#initialize方法。SQLite3::Database.new(file,options={})SQLite3::Statement.new(db,sql)以上两句来自文档。但是在我的代码中,当我试图追踪到这个时$db=SQLite3::Database.new"MyDBfile"它刚刚跨过。然后稍后当我尝试追踪#$db.execute我确实进入

ruby - 功能标志最佳实践 : condition inside or outside of a method?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我们使用功能标志来启用/禁用我们系统中的某些功能。我与我的同事讨论了向代码本身添加功能标志的标准方法是什么:考虑以下方法:deffeatured_methoddo_thisdo_thatend我们的代码中大约有15个不同的地方调用了该方法。您是否建议在每次调用此方法之前添加检查功能是否已启用:iffeature_enabled?(:feature_key)featured_methoden

ruby-on-rails - 了解 Rails 中的 race_condition_ttl

我试图在使用Rails.cache.fetch时理解Rails中的race_condition_ttl指令。我有一个看起来像这样的Controller操作:deffoo@foo=Rails.cache.fetch("foo-testing",expires_in:30.seconds,race_condition_ttl:60.seconds)doTime.now.to_send@foo#thisgetsusedinaviewdowntheline...end根据我在Rails文档中阅读的内容,此值应在30秒后过期,但允许过时值再提供60秒。但是,我无法弄清楚如何重现将向我展示这种行为

Ruby:为什么我在这里收到警告 "regex literal in condition"?

一个简单的Ruby程序,运行良好(使用Ruby2.0.0):#!/usr/bin/rubywhilegetsprintif/foo/../bar/end但是,Ruby还会输出警告warning:regexliteralincondition。似乎Ruby认为我的触发器表达式/foo/../bar/是危险的。我的问题:这个程序的危险在哪里?并且:我可以关闭此警告吗(最好只针对此语句,保持其他警告处于事件状态)?顺便说一句,我在网上找到了一些关于这种代码的讨论,也提到了警告,但一直没有找到一个很好的解释为什么我们会被警告。 最佳答案 您