【问题标题】:Console working, server not控制台工作,服务器不工作
【发布时间】:2014-02-13 06:45:07
【问题描述】:

我有两个模型,名为 User 和 Email。用户有多个邮箱,邮箱属于用户。我打开我的控制台,我有这个:

> user = User.find(3)
> user.email[1].confirmed?
false 

在我的控制台中一切正常,但在服务器上,email[1] 为 nil:NilClass,我检查了它的存在并且用户确实存在。这是怎么回事……?

类似的东西表明这是一个方法问题(忘记了[范围?]这个词)公共或私人的事情......嗯但我不知道是不是这样?这可能是什么?

【问题讨论】:

  • 你能发布你的错误堆栈跟踪
  • 方法未找到“已确认?”在 nil:NilClass
  • 从错误信息email[1]nil
  • 同一台机器?相同的环境(开发、生产……?)不是沙盒?
  • 您确定 id = 3 的用户至少有两封电子邮件吗?运行这个:User.find(3).email.size

标签: ruby-on-rails ruby activerecord rails-activerecord


【解决方案1】:

将您的代码更改为以下内容:

user.email[1].try(:confirmed?)

这相当于检查存在并在有对象时调用方法。

【讨论】:

  • 我认为 OP 是说用户应该存在,但不存在,在其中一种环境中。
  • 我认为这行得通,因为它通过原始代码的预期通过,但为什么呢?
  • @DaveNewton 不,不是
  • @user3180221 那么你需要更好地描述问题。 User.find(3) 是 User.find(3)。如果用户存在于服务器上,但不存在于控制台上,并且没有其他不同之处,则说明有问题。
猜你喜欢
  • 2015-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多