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
Ruby on rails RubyonRails通过api查询从模型中获取属性_Ruby On Rails_Ruby On Rails 3_Rails Activerecord - Fatal编程技术网

Ruby on rails RubyonRails通过api查询从模型中获取属性

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

这个问题的答案应该很简单,但我没有通过其他问题找到答案,也没有通过在Rails控制台中胡闹找到答案

我只想通过活动记录查询接口查询数据库,并返回第一个或最后一个条目的单个列的值,而不必遍历整个表(稍后将解释)

有一种方法可以通过Pull实现这一点,但是查询消息的结构如下所示:

    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