【问题标题】:Why doesn't this code produce the desired result?为什么这段代码没有产生预期的结果?
【发布时间】:2012-05-24 03:31:57
【问题描述】:
def check_beta_code
    beta_code_array = ['AAAAAAAAAA', 'BBBBBBBBBB', 'CCCCCCCCCC', 'DDDDDDDDDD', 'EEEEEEEEEE']

    if false == beta_code_array.include?(:beta_code)
        errors.add(:beta_code, "Invalid Beta Code")
    end
end

我创建了一个用户user = User.new{:beta_code=>'AAAAAAAAAA'},然后是user.save #=> false,然后我创建了user.errors #=>{:beta_code=>["Invalid Beta Code"]}

为什么即使 :beta_code 等于其中一个值,它也会给出错误? 救命!

【问题讨论】:

  • 为什么需要该语句的“if false ==”部分?编写该行的更简单方法是“除非 beta_code_array.include?(beta_code)”。
  • +1 传教士,我会在我的回答中更改。

标签: ruby-on-rails ruby


【解决方案1】:

看看你的条件:

beta_code_array.include?(:beta_code)

您正在检查 beta_code_array 是否包含符号 :beta_code。我假设您打算传递一个字符串参数?我对 Rails 不太熟悉——如果这不是用户模型的正确形式,请纠正我。

def check_beta_code beta_code
    beta_code_array = ['AAAAAAAAAA', 'BBBBBBBBBB', 'CCCCCCCCCC', 'DDDDDDDDDD', 'EEEEEEEEEE']

    unless beta_code_array.include?(beta_code)
        errors.add(:beta_code, "Invalid Beta Code")
    end
end

【讨论】:

  • 非常感谢,我对 Rails 和一般编码都很陌生
猜你喜欢
  • 2019-02-03
  • 2019-11-14
  • 1970-01-01
  • 2022-11-20
  • 2014-06-04
  • 2011-01-14
  • 2020-09-23
  • 2018-07-20
  • 1970-01-01
相关资源
最近更新 更多