如何在rails 4.1中使用'select limit 1'

时间:2014-09-06 10:43:38

标签: ruby-on-rails-4

我想使用此代码: select id from categories where hotel_id=4 limit 1

我是铁杆新手。如何在控制器中使用activerecord来获得与上述代码相同的结果。 我的控制器中hotel_id已经params

3 个答案:

答案 0 :(得分:1)

尝试使用控制器:

@category = Category.where(:hotel_id => 4).limit(1)

@category = Category.where(:hotel_id => 4)

它会返回类别表格中hotel_id4的所有数据 您可以通过在上面的代码旁边写下这一行来检查它。

abort @category.inspect  # to check in browser what does this object contains

如果您想要来自对象的第一个数据,那么您可以在第一行之后写出@category.first与上一个条目@category.last相同的内容。


如果您只需要一首匹配记录,那么您可以使用 find_by

@category = Category.find_by(:hotel_id => 4)

答案 1 :(得分:0)

您可以使用.limit(1).first.last

Model.where(hotel_id: 4).limit(1)

答案 2 :(得分:0)

正确的答案是使用limit(1) reference

使用firstlast实际运行整个查询然后仅返回第一个元素,如果结果集很大,则表现不佳。

所以只需坚持使用limit

修改

我刚检查过,我发现使用firstlast确实会在查询中添加limit语句,所以我猜它们也和limit(1)一样正确