Rails在同一对象的异常调试输出中的区别

时间:2013-06-29 18:12:56

标签: ruby-on-rails-3 ruby-on-rails-3.2

我的应用中有用户模型和列表模型。

pages_controller.rb

class PagesController < ApplicationController

 def home
  if user_signed_in?
   @lists = current_user.lists    
   # raise @lists.inspect 
   @new_list = current_user.lists.build
  end
 end

end 

页/ home.html.erb

<%= raise @lists.inspect %>

现在,我当前的用户没有与他关联的列表。 当我取消注释“Pages#home”中的第3行

raise @lists.inspect
时,我得到如下输出:
 [] 

但是,当我对该行进行注释时,会引发home.html.erb中的异常,其输出如下:[#<List id: nil, name: nil, description: nil, user_id: 1, created_at: nil, updated_at: nil>]

为什么同一@lists.inspect行的输出存在差异?

编辑:当我使用@lists = current_user.lists.all代替@lists = current_user.lists时,我会在两个地方获得一个空数组。为什么2个代码之间的行为不同?

1 个答案:

答案 0 :(得分:1)

因为您在第一个lists之后在控制器中构建了raise

@new_list = current_user.lists.build

它是相同的代码,但数据是不同的,因为你做了的事情。