我正在使用
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()。我会遇到各种错误。欢迎提出如何使其变得更加困难的建议
答案 0 :(得分:0)
为什么不是最简单的方法:
@object = Object.find(params[:object_id])
@association = @object.associations.first
puts "#{@object.inspect}, #{@association.inspect}"
(假设has_many :associations
在对象中定义)
你没有获得关联字段的原因是因为joins
唯一能做的就是加入SQL中的另一个表。它不会获取已连接的数据。 select
只选择对象属性的子集,我认为其余的只是被忽略。