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排序的时间排序。首先给出您所期望的,但最好不要依赖它:)