我有这种奇怪的行为,我不明白为什么。事情是这样的:
我的支付模式中有这个记录:
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
之前过滤已保存的记录