我只想从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 query.very奇怪中获得了这个名称。
发布于 2016-12-19 09:58:51
试试这个:
accounts = self.accounts.select(:id, :name, :account_number).order("created_at DESC").paginate(:page => page_count, :per_page => per_page_count)发布于 2016-12-19 10:02:32
请正确使用select,它应该是select('id, name'),那么您的查询将是:
accounts = self.accounts.select('id,name,account_number').order("created_at DESC").paginate(:page => page_count, :per_page => per_page_count)发布于 2016-12-19 10:39:37
accounts = self.accounts.select("id, name,account_number").order("created_at DESC").paginate(:page => page_count, :per_page => per_page_count)对于to_json方法
return {
account.to_json({ :only => [:id, :name, :account_number, :column4, :column5, :column8, :column9] })
}https://stackoverflow.com/questions/41219811
复制相似问题