Ruby on rails Rails 4:Order by有一个带有备用名称的值 class Foo类名:'Bar' 结束 类FoosController外键::foo_name,primary_key::name。我前几天发现了这个问题,并认为我已经找到了解决方案,但我仍然觉得我遗漏了一些东西。为了增加一点复杂性,当按bar.value排序时,我仍然希望按Foo.name排序,但是当我Foo.includes(:baz).order('bar.value asc,name asc')确定,如果bar不包含name列,则只显示3个Foo。如果是,则需要顺序('bar.value asc,foo.name asc')。问题是什么?Bar有一个foo_name列,但为了检查它,我将其更改为order('Bar.value asc,foos.name asc'),并且我的30个测试值中只有3个出现。它们都有一个baz,并且它们都没有显示foo.name,但是除了3个以外,所有的都消失了。看,foo.includes(:baz).order('bar.value asc,foos.name asc')生成选择与左外连接。只需查看日志并尝试在数据库上运行此查询。您会发现数据的问题,我已经在rails控制台中运行了这个命令,它返回一个包含所有值的activerecord对象。我查看了Rails服务器日志,然后比较了两者之间的SQL。SQL完全相同,减去分页(bootstrap-will_paginate gem)。我删除了分页,所有的值都显示出来(尽管不正确)。任何想法,这些虫子都变得有点模糊了! class Foo < ActiveRecord::Base has_one :baz, -> class_name: 'Bar' end class FoosController < ApplicationController def index @foos = Foo.includes(:baz).order ...? end end

Ruby on rails Rails 4:Order by有一个带有备用名称的值 class Foo类名:'Bar' 结束 类FoosController外键::foo_name,primary_key::name。我前几天发现了这个问题,并认为我已经找到了解决方案,但我仍然觉得我遗漏了一些东西。为了增加一点复杂性,当按bar.value排序时,我仍然希望按Foo.name排序,但是当我Foo.includes(:baz).order('bar.value asc,name asc')确定,如果bar不包含name列,则只显示3个Foo。如果是,则需要顺序('bar.value asc,foo.name asc')。问题是什么?Bar有一个foo_name列,但为了检查它,我将其更改为order('Bar.value asc,foos.name asc'),并且我的30个测试值中只有3个出现。它们都有一个baz,并且它们都没有显示foo.name,但是除了3个以外,所有的都消失了。看,foo.includes(:baz).order('bar.value asc,foos.name asc')生成选择与左外连接。只需查看日志并尝试在数据库上运行此查询。您会发现数据的问题,我已经在rails控制台中运行了这个命令,它返回一个包含所有值的activerecord对象。我查看了Rails服务器日志,然后比较了两者之间的SQL。SQL完全相同,减去分页(bootstrap-will_paginate gem)。我删除了分页,所有的值都显示出来(尽管不正确)。任何想法,这些虫子都变得有点模糊了! class Foo < ActiveRecord::Base has_one :baz, -> class_name: 'Bar' end class FoosController < ApplicationController def index @foos = Foo.includes(:baz).order ...? end end,ruby-on-rails,activerecord,ruby-on-rails-4,Ruby On Rails,Activerecord,Ruby On Rails 4,我想根据Baz.value订购我的Foo索引。但是,我找不到有效的命令。rails控制台。。。 Foo.includes(:baz).order('baz.value')生成错误。我能在这里做什么?您实际上没有baz表。由于类名:'Bar',您有了条形图表 因此,正确的答案将是Foo.includes(:baz).order('bar.value')在什么型号上有外键?我想在“Baz”上有一个foo_id,对吗?@StavrosSouvatzis在foo,:Baz,->外键::foo_name,

我想根据
Baz.value
订购我的
Foo
索引。但是,我找不到有效的命令。rails控制台。。。
Foo.includes(:baz).order('baz.value')
生成错误。我能在这里做什么?

您实际上没有
baz
表。由于
类名:'Bar'
,您有了
条形图


因此,正确的答案将是
Foo.includes(:baz).order('bar.value')

在什么型号上有外键?我想在“Baz”上有一个foo_id,对吗?@StavrosSouvatzis在foo,
:Baz,->外键::foo_name,primary_key::name
。我前几天发现了这个问题,并认为我已经找到了解决方案,但我仍然觉得我遗漏了一些东西。为了增加一点复杂性,当按
bar.value
排序时,我仍然希望按
Foo.name
排序,但是当我
Foo.includes(:baz).order('bar.value asc,name asc')
确定,如果
bar
不包含
name
列,则只显示3个
Foo
。如果是,则需要
顺序('bar.value asc,foo.name asc')
。问题是什么?Bar有一个
foo_name
列,但为了检查它,我将其更改为
order('Bar.value asc,foos.name asc')
,并且我的30个测试值中只有3个出现。它们都有一个baz,并且它们都没有显示
foo.name
,但是除了3个以外,所有的都消失了。看,
foo.includes(:baz).order('bar.value asc,foos.name asc')
生成
选择
左外连接
。只需查看日志并尝试在数据库上运行此查询。您会发现数据的问题,我已经在rails控制台中运行了这个命令,它返回一个包含所有值的activerecord对象。我查看了Rails服务器日志,然后比较了两者之间的SQL。SQL完全相同,减去分页(bootstrap-will_paginate gem)。我删除了分页,所有的值都显示出来(尽管不正确)。任何想法,这些虫子都变得有点模糊了!
class Foo < ActiveRecord::Base    
  has_one :baz, -> class_name: 'Bar'
end

class FoosController < ApplicationController
  def index
    @foos = Foo.includes(:baz).order ...?
  end
end