Rails-查找没有关联记录



我想选择一个用户,并在其中添加相关记录,例如本例中的子记录。但只有具有特定place_id的子项。

这段代码是有效的,但当用户没有任何子条目时,我得到了一个错误。

  @user = User.includes(:child).find(params[:id],
                                             :conditions => ["child.place_id = ?", @place_id])

错误如下:

Couldn't find User with id=19 [WHERE (child.place_id = 0)]

谢谢!

尝试where子句,因为您已经在使用暴力SQL。这不会产生错误,并且将获取或设置为零:

@user = User.includes(:child).
             where("users.id=? AND child.place_id = ?", 
                    params[:id],@place_id).first

PS:是child.place_id还是children.place_id?ActiveRecord倾向于将表名复数化。

编辑:

这只适用于有孩子的情况。如果你想让它在没有孩子的情况下工作,请这样做:

@user = User.joins('LEFT JOIN child on child.user_id = users.id').
             where('child.place_id = ? AND users.id = ?', @place_id, params[:id]).
             select('users.field1, child.field2 as field3')

如果您想要特定的字段,请在上面的select方法中添加它们,该方法作为示例提供。

最新更新