Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Rails 4+:仅从包含的关联中选择特定列_Postgresql_Ruby On Rails 4_Query Optimization - Fatal编程技术网

Postgresql Rails 4+:仅从包含的关联中选择特定列

Postgresql Rails 4+:仅从包含的关联中选择特定列,postgresql,ruby-on-rails-4,query-optimization,Postgresql,Ruby On Rails 4,Query Optimization,我有一个属于相当标准的帐户的用户模型。在每个请求中,我都需要检索当前的_用户,但我还想返回帐户以减少数据库查询: # ApplicationController def current_user @current_user ||= User.includes(:account).find_by(auth_token: cookies[:auth_token]) end def current_account @current_account ||= current_user.accou

我有一个属于相当标准的帐户的用户模型。在每个请求中,我都需要检索当前的_用户,但我还想返回帐户以减少数据库查询:

# ApplicationController
def current_user
  @current_user ||= User.includes(:account).find_by(auth_token: cookies[:auth_token])
end

def current_account
  @current_account ||= current_user.account
end
这个很好用。但是,帐户记录有很多额外的文本数据,我并不总是想返回这些数据。一个更持久的解决方案是将这些额外字段移动到一个名为account\u details的新表中,并在account和account\u details之间建立一对一的关系

然而,我需要一个短期的解决方案,它将提供一些优化,直到我能够重构完美是一个迭代过程

我想从当前用户返回所有列,但我只想从当前用户帐户中选择几列

我试过了,但没有成功:

@current_user ||= User.includes(:account).references(:account).select("users.*, account.id, account.uuid").find_by(auth_token: cookies[:auth_token])
当我查看@current_user.account时,它仍然显示所有列及其值,我只需要id、uuid列


我找不到任何关于使用select的清晰语法。。。与包括:协会;这是可能的吗?

您需要在您的用户模型中添加一个额外的关联

此关联应在查询中使用

User.includes(:account_columns)
这是因为Rails没有传递include查询选项的功能

也考虑在查询中使用连接,因为它也满足您的需要。

User.joins(:accounts).select("accounts_ids, accounts.uuid")

您需要在用户模型中添加额外的关联

此关联应在查询中使用

User.includes(:account_columns)
这是因为Rails没有传递include查询选项的功能

也考虑在查询中使用连接,因为它也满足您的需要。

User.joins(:accounts).select("accounts_ids, accounts.uuid")