Ruby on rails Rails是否自动分配ID';s
我试图在我的控制器中对我的用户进行排序,我想按id号对他们进行排序。我的问题是,rails是否会在创建订单时自动为其分配id,或者我是否需要将其添加到控制器中的create操作中的create函数中?例如,我可以这样说: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排序
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')
一元减法快捷方式…据我所知,默认是按数据库自然顺序排序。这与基于主键的排序不同。据我所知,默认情况下是按数据库自然顺序排序。这与基于主键的排序不同。