我想使用此代码:
select id from categories where hotel_id=4 limit 1
我是铁杆新手。如何在控制器中使用activerecord
来获得与上述代码相同的结果。
我的控制器中hotel_id
已经params
。
答案 0 :(得分:1)
尝试使用控制器:
@category = Category.where(:hotel_id => 4).limit(1)
或强>
@category = Category.where(:hotel_id => 4)
它会返回类别表格中hotel_id
为4
的所有数据
您可以通过在上面的代码旁边写下这一行来检查它。
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
使用 first
或last
实际运行整个查询然后仅返回第一个元素,如果结果集很大,则表现不佳。
所以只需坚持使用 limit
修改强>:
我刚检查过,我发现使用first
和last
确实会在查询中添加limit
语句,所以我猜它们也和limit(1)
一样正确