我有一个传记模型,它和生活方式模型,教育模型,位置模型有一对一的联系。
当应用程序加载时,我需要获取所有这些信息。我这么做是通过:

biography = current_user.biography
lifestyle = biography.lifestyle
education = biography.education
location = biography.location

result = { "biography" => biography, "lifestyle" => lifestyle, "education" => education, "location" => location}

然后将json结果发送回:
render :json => result

所以我对这个get总共执行了四个查询。有没有办法发出更少的查询并得到相同的结果?
我试过使用联接,但它只返回一个表中的列。
N+1在这里并没有真正的帮助,因为我没有循环查看结果。
还有,包括也没有给我想要的结果。
有更好的选择吗?
以下是一些协会:
class Lifestyle < ActiveRecord::Base
   belongs_to :biography
end

class Biography < ActiveRecord::Base
   has_one :lifestyle, dependent: :destroy
   has_one :education, dependent: :destroy
   has_one :location, dependent: :destroy
end

最佳答案

biography = Biography.where(user_id: current_user.id).eager_load(:lifestyle, :education, :location).first
:)

关于ruby-on-rails - 如何改善has_one关联的activerecord查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34385166/

10-14 15:50