在rails中调试sql结果的正确方法

时间:2014-01-30 02:54:03

标签: ruby-on-rails

我正在使用

    puts @object.inspect

调试rails中的查询结果,但输出似乎不包含我为查询定义的任何连接。如何显示完整数组?

例如,如果我执行以下操作

    @object = Object.joins("JOIN associations ON associations.id = object.association_id")
      .where(:id => params[:object_id])
      .select("objects.*, associations.*")
      .first
    puts @object.inspect

我得到调试数组中的所有Object字段,但没有关联字段。当我尝试在我的视图中使用它们时,它们就在那里(@ object.association_field等)

PS - 上面的查询看起来很难看,我只是试图拉一条记录,但是如果我尝试使用.find()而不是.where()。我会遇到各种错误。欢迎提出如何使其变得更加困难的建议

1 个答案:

答案 0 :(得分:0)

为什么不是最简单的方法:

@object = Object.find(params[:object_id])
@association = @object.associations.first
puts "#{@object.inspect}, #{@association.inspect}"

(假设has_many :associations在对象中定义)

你没有获得关联字段的原因是因为joins唯一能做的就是加入SQL中的另一个表。它不会获取已连接的数据。 select只选择对象属性的子集,我认为其余的只是被忽略。