我在rails 4.2上使用ruby 2.1.5并且遇到了一些问题 我得到了用户并且有很多关系登录。
@users = User.joins(:logins).where("country LIKE ?", "%#{params[:searchc]}%").uniq
我希望根据登录信息找到用户,但我无法找到一个很好的解决方案来在我的视图中显示相关对象。 随着连接我失去了相关的登录,只剩下找到的登录,但我需要所有。
@users.includes(:logins).each
是问题所在。 为每个用户启动一个新的加载登录(@ users.first.logins)非常慢......
编辑: 好吧,我有一个解决方法:
@users = User.joins("JOIN logins ON (logins.user_id = users.id AND logins.country LIKE '#{params[:searchc]}')", ).uniq.includes(:logins)
如果有更好的解决方案请告诉我请
答案 0 :(得分:0)
您需要的是includes而不是joins
。它也被称为N + 1查询
@users = User.includes(:logins).where("country LIKE ?", "%#{params[:searchc]}%").uniq
答案 1 :(得分:0)
您需要确定国家/地区的资格,因此假设它位于您的登录表中,就像这样
@users = User.joins(:logins).("logins.country LIKE ?", "%#{params[:searchc]}%").uniq