Ruby on rails RubyonRails通过api查询从模型中获取属性
这个问题的答案应该很简单,但我没有通过其他问题找到答案,也没有通过在Rails控制台中胡闹找到答案 我只想通过活动记录查询接口查询数据库,并返回第一个或最后一个条目的单个列的值,而不必遍历整个表(稍后将解释) 有一种方法可以通过Pull实现这一点,但是查询消息的结构如下所示:Ruby on rails RubyonRails通过api查询从模型中获取属性,ruby-on-rails,ruby-on-rails-3,rails-activerecord,Ruby On Rails,Ruby On Rails 3,Rails Activerecord,这个问题的答案应该很简单,但我没有通过其他问题找到答案,也没有通过在Rails控制台中胡闹找到答案 我只想通过活动记录查询接口查询数据库,并返回第一个或最后一个条目的单个列的值,而不必遍历整个表(稍后将解释) 有一种方法可以通过Pull实现这一点,但是查询消息的结构如下所示: initial = Message.where("id = ?", some_id).pluck(:value).first final = Message.where("id = ?", some_i
initial = Message.where("id = ?", some_id).pluck(:value).first
final = Message.where("id = ?", some_id).pluck(:value).last
不幸的是,这是一个极为低效的操作,因为它在返回第一个或最后一个条目之前,从提供的id
上有匹配项的每个记录中提取值
属性。我想对这些陈述进行基本的重新排序,大致如下:
initial = Message.where("id = ?", some_id).first.pluck(:value)
final = Message.where("id = ?", some_id).last.pluck(:value)
然而,我得到了一个命名错误,它解释了对于消息没有方法pull
。我尝试了多种方法:
initial = Message.where("id = ?", some_id).first(:value)
initial = Message.where("id = ?", some_id).first.select(:value)
...
但都会返回某种错误。我知道退货
Oops不知何故,我的问题的一部分被切断了(包括最后的答案)-我会看看是否能找到它,但我使用
select()
方法进行了探索,在该方法中,我发现select只接受一个参数,这意味着必须构建一个查询字符串,因为它不能接受可选参数,如id=?,一些id
,但后来我发现只需添加一个.value
(其中value
是您试图获取的列属性)就可以了,所以我切换回了where
方法,如下面的答案所示。答案在问题中,但如果您尝试这样做:
initial = Message.where("id = ?", some_id).pluck(:value).first
final = Message.where("id = ?", some_id).pluck(:value).last
将其更改为此(只需引用列名,在本例中它是value
,但可以是amount
或其他内容):
initial = Message.where("id = ?", some_id).first.value
final = Message.where("id = ?", some_id).last.value