Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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
Database 从轨道3上的脚手架上取下第一件物品_Database_Ruby On Rails 3_Scaffolding - Fatal编程技术网

Database 从轨道3上的脚手架上取下第一件物品

Database 从轨道3上的脚手架上取下第一件物品,database,ruby-on-rails-3,scaffolding,Database,Ruby On Rails 3,Scaffolding,我已经做了我的研究,但我想我不知道怎么问,所以我会尝试解释。。。 我在寻找一种方法,要求第一个条目保存在脚手架上。。。 喜欢 如果表中有以下产品: 甜蜜的 裤子 围巾 网球 我写了@first\u prod=Products.first(或类似的东西)在我的模型上或在我看来(或类似的东西)Rails在这种情况下给了我第一个产品-更甜 提前谢谢…好的。假设调用Product.all时,它会按照上面指定的顺序返回产品。所以,为了变得更甜,您可以调用Product.all.first。或者,如果您

我已经做了我的研究,但我想我不知道怎么问,所以我会尝试解释。。。 我在寻找一种方法,要求第一个条目保存在脚手架上。。。 喜欢 如果表中有以下产品:

  • 甜蜜的
  • 裤子
  • 围巾
  • 网球
我写了
@first\u prod=Products.first
(或类似的东西)在我的模型上或在我看来
(或类似的东西)Rails在这种情况下给了我第一个产品-更甜


提前谢谢…

好的。假设调用
Product.all
时,它会按照上面指定的顺序返回产品。所以,为了变得更甜,您可以调用
Product.all.first
。或者,如果您在控制器中完成了
@products=Product.all
,并且希望它出现在您的视图中,则可以使用
@products.first
。或者,如果您正在循环它们,并且希望对第一个做一些特别的事情,您可以这样做:

<% @products.each_with_index do |product, i| %>
  <% if id == 0 %>
     do something special as this is the first product
  <% end %>
<% end %>

做一些特别的事情,因为这是第一个产品

我想你回答了自己的问题

如果您知道要访问特定型号的第一个保存项,则只需调用
Product.first
。因此,在要访问其中数据的视图的控制器操作中,只需键入
@product=product.first
。。。比如说

def index
  @products = Product.all
  @product = Product.first
end

这样,您就可以访问第一个保存的产品,也可以访问索引视图代码中的整个集合。

在rails中,您可以定义一些默认方式来从模型中获取内容

在您的情况下,我将创建一个范围

在模型中输入以下内容:

scope ordered, :order => "Product.created_at ASC"
当你打电话的时候

Product.ordered
它将返回您在创建时订购的所有产品。 如果你想要第一个产品,你只需要

Product.ordered.first
如果您只想在一个特定的位置获取项目,您可以执行以下操作(而不是我上面提到的操作)

Product.find(:first,:order=>'created_at ASC')


如果我的解释不清楚,请让我知道,我将尝试重新格式化。第一个方法不一定给出第一个输入的元素。它使用数据库默认排序给出第一个元素。我的答案是我创建了使用order_by子句的查询。有趣的是,我假设所有数据库的默认排序都基于记录的unque id。如果不是这样的话,那么我建议使用一个基于created_at属性排序的作用域。好吧,据我所知,mysql在很多情况下默认按主键(不必是ID)输入InnoDB排序的时间排序。首先给出您所期望的,但最好不要依赖它:)