Ruby on Rails - 在控制台中具有价值,但在我的控制器和视图中为零?



我有这种奇怪的行为,我不明白为什么。事情是这样的:

我的支付模式中有这个记录:

1.9.3p286 :019 > u.payment.last
  Payment Load (0.3ms)  SELECT "payments".* FROM "payments" WHERE "payments"."user_id" = 10
 => [#<Payment id: 37, bank_name: "Mercantil", plan: "Plan Uno", date: "2012-12-25", reference_number: "3452435", coupon: "", user_id: 10, created_at: "2012-12-25 21:56:12", updated_at: "2012-12-25 21:58:31", active_until: "2013-01-24">] 

您可以看到,我的用户有一条记录:10.

如果我试图在控制器中获取相同的信息我不会得到任何异常,但是

@user.payment.last.active_until

为空,在视图中相同。

例如,如果我在我的视图中尝试:

<%= @user.payment.last.active_until %>

I didn't get anything, is blank.

如果我尝试这个

<%= @user.payment %>

我得到的和我的控制台一样

[#<Payment id: 37, bank_name: "Mercantil", plan: "Plan Uno", date: "2012-12-25", reference_number: "3452435", coupon: "", user_id: 10, created_at: "2012-12-25 21:56:12", updated_at: "2012-12-25 21:58:31", active_until: "2013-01-24">, #<Payment id: nil, bank_name: nil, plan: nil, date: nil, reference_number: nil, coupon: nil, user_id: 10, created_at: nil, updated_at: nil, active_until: nil>]
我真的不明白这里发生了什么。请帮忙。

提前感谢。

PD:用户可以有许多付款,但我只需要最后一个。

这与您的控制台中不一样。在控制台中,您将获得一条记录,但在视图中,您将获得两条记录-您在控制台中看到的记录和另一条空白记录。

我猜空白的一个是您用于创建新的Payment记录的形式的form标记助手,但这也是last返回的一个。要么取前一个,要么在调用last之前过滤已保存的记录

相关内容

  • 没有找到相关文章

最新更新