0

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

我的付款模式中有此记录:

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 %>

什么都没有,一片空白。

如果我试试这个

<%= @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:用户可以有很多付款,但我只需要最后一个。

4

1 回答 1

2

它与您的控制台中的不同。在控制台中,您得到一条记录,但在视图中,您得到两条记录——您在控制台中看到的记录,以及另一条空白记录。

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

于 2012-12-26T00:30:46.860 回答