【发布时间】:2013-08-07 07:18:54
【问题描述】:
我有两个型号,例如User 和Tracking
Tracking models 下面有这 6 列
- 身份证
- user_id
- target_user_id
- accessed_at
- created_at
- updated_at
models/user.rb
has_many: trackings
models/tracking.rb
belongs_to :user
belongs_to :user, :foreign_key => "target_user_id", :class_name => "User"
然后在controllers/trackings_controller.rb,我这样编码
控制器
@trackings = Tracking.find_by_target_user_id(current_user.id).page(params[:page]).per(10)
但我得到 nil 错误:(这是为什么呢?
跟踪表中还没有记录。
如何找回?
如果我这样编码,就不会出现错误:(
@trackings = Tracking.page(params[:page]).per(10)
【问题讨论】:
-
由于在 tracking 表中还没有记录,因此 Tracking.find_by_target_user_id(current_user.id) 的结果为零,然后您正在执行 nil.page(params[:page])。因此你得到零错误。
-
@Deepika 那么为什么我在编码
@trackings = Tracking.page(params[:page]).per(10)时不会出现 nil 错误呢? -
您可以查看错误的回溯,并使用 Better errors gem 很好地调查每个步骤。
-
@ThomasKlemm 谢谢。我已经安装了
-
@MKK 因为如果记录不存在 find_by_something 返回 nil,如果记录不存在 Tracking.page(params[:page]).per(10) 返回数组 []。
标签: ruby-on-rails ruby-on-rails-3