【发布时间】:2016-12-19 09:50:47
【问题描述】:
我只想从 ActiveRecord 获取特定列的详细信息。 所以我确实运行了以下代码。
accounts = self.accounts(:select => "id, name,account_number").order("created_at DESC").paginate(:page => page_count, :per_page => per_page_count)
每当执行此行时,它都会触发以下查询
SELECT "accounts".* FROM "accounts" INNER JOIN "super_account_accounts" ON "accounts"."id" = "super_account_accounts"."account_id" WHERE "super_account_accounts"."super_account_id" = 8 ORDER BY accounts.created_at DESC LIMIT 10 OFFSET 0
为什么当我已经指定了一些我想要的信息的列时,它会获取所有列信息。
注意:-
超级账号模型与账号有如下关联
has_many :accounts, :through => :super_account_accounts, :dependent => :destroy
帐户模型与超级帐户有以下关联
has_many :super_accounts, :through => :super_account_accounts
编辑 1
所以通过以下方式让它工作
accounts = self.accounts.select("id, name,account_number").order("created_at DESC").paginate(:page => page_count, :per_page => per_page_count)
假设我想获取 10-11 列。 使用上述查询后,当我尝试应用 to_json 方法时,它只考虑了一些列,而忽略了其余列。
关于为什么使用 to_json 方法会发生这种情况的任何输入? 我错过了什么吗?
EDIT2 通过编写以下代码使 to_json 工作正常
account.to_json({ :only => [:id, :name, :account_number, :column4, :column5, :column8, :column9] })
仍然不确定为什么我们需要在 to_json 方法中指定列名,因为我们已经从 select 查询中得到了。非常奇怪
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 activerecord