Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/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
Ruby on rails Rails是否自动分配ID';s_Ruby On Rails_Sorting - Fatal编程技术网

Ruby on rails Rails是否自动分配ID';s

Ruby on rails Rails是否自动分配ID';s,ruby-on-rails,sorting,Ruby On Rails,Sorting,我试图在我的控制器中对我的用户进行排序,我想按id号对他们进行排序。我的问题是,rails是否会在创建订单时自动为其分配id,或者我是否需要将其添加到控制器中的create操作中的create函数中?例如,我可以这样说: def index @users = User.all.order(:WHAT TO PUT HERE???????) end 我会在空格里写上:id吗?如果我这样做了,我需要在其他地方定义id吗?或者这是ruby在后端所做的吗?在大多数情况下,Rails会返回按id排序

我试图在我的控制器中对我的用户进行排序,我想按id号对他们进行排序。我的问题是,rails是否会在创建订单时自动为其分配id,或者我是否需要将其添加到控制器中的create操作中的create函数中?例如,我可以这样说:

def index
  @users = User.all.order(:WHAT TO PUT HERE???????)
end

我会在空格里写上:id吗?如果我这样做了,我需要在其他地方定义id吗?或者这是ruby在后端所做的吗?

在大多数情况下,Rails会返回按id排序的记录。但您不应该依赖Rails,因为排序是特定于数据库的

要显式添加按id排序,应使用:

def index
  @users = User.order(:id)
end

Id是自动添加的,您不需要在任何地方声明它。

在大多数情况下,Rails会返回按Id排序的记录。但您不应该依赖Rails,因为排序是特定于数据库的

要显式添加按id排序,应使用:

def index
  @users = User.order(:id)
end

Id是自动添加的,您不需要在任何地方声明它。

Rails只帮助您通过迁移创建表。迁移创建表时,会自动将id列作为主键添加到“自动增量”。因此,为什么要创建记录,实际上是数据库添加了id,或者如上所述,它会从最后一个id自动递增+1。因此,使用ActiveRecord创建记录时,不需要指定id

现在回答您的主要问题:当您想按列升序排序时,可以将列的名称传递给
order
方法。不过,您不需要调用
all

那么就这么做吧:

User.order(:id)
这将从较低的ID排序到较高的ID。要做相反的事情:

User.order("id DESC")

这将通过从高ID到低ID排序,首先为您提供最新创建的记录。

Rails仅帮助您通过迁移创建表。迁移创建表时,会自动将id列作为主键添加到“自动增量”。因此,为什么要创建记录,实际上是数据库添加了id,或者如上所述,它会从最后一个id自动递增+1。因此,使用ActiveRecord创建记录时,不需要指定id

现在回答您的主要问题:当您想按列升序排序时,可以将列的名称传递给
order
方法。不过,您不需要调用
all

那么就这么做吧:

User.order(:id)
这将从较低的ID排序到较高的ID。要做相反的事情:

User.order("id DESC")

这将首先通过从较高的ID到较低的ID排序,为您提供最新创建的记录。

如果您想按ID对用户进行排序

 @users = User.order(:id)  #ASC default

 @users = User.order('id ASC')  #ASC explicit

 @users = User.order('id DESC')  #DESC explicit

如果要按ID对用户进行排序

 @users = User.order(:id)  #ASC default

 @users = User.order('id ASC')  #ASC explicit

 @users = User.order('id DESC')  #DESC explicit

…永远不要忘记
User.order('-id')
一元减法快捷方式…

…永远不要忘记
User.order('-id')
一元减法快捷方式…

据我所知,默认是按数据库自然顺序排序。这与基于主键的排序不同。据我所知,默认情况下是按数据库自然顺序排序。这与基于主键的排序不同。