我正在使用Ruby on Rails 5.我在查询从此查询返回的结果时遇到问题:
@crypto_currencies = CryptoIndexCurrency
.all
.pluck("crypto_currency_id")
.order(:name)
name
字段是我想要订购的表的有效成员。
cindex=# \d crypto_currencies;
Table "public.crypto_currencies"
Column | Type | Modifiers
--------------------------+-----------------------------+----------------------------------------------------------------
id | integer | not null default nextval('crypto_currencies_id_seq'::regclass)
name | character varying |
symbol | character varying |
latest_market_cap_in_usd | bigint |
latest_total_supply | bigint |
created_at | timestamp without time zone | not null
updated_at | timestamp without time zone | not null
不幸的是,当我运行上述内容时,我收到错误:
undefined method `order' for #<Array:0x007fa3b2b27bd8>
我该如何纠正?
答案 0 :(得分:1)
没错,pluck
会返回一个数组。以下是文档中的说明:
Pluck返回一个类型化的属性值数组,以匹配弹拨的列名
where
和order
以及其他返回Relation
的方法,以便您可以链接它们。最终应该pluck
。
答案 1 :(得分:1)
说你想为自己做鸡蛋 - 你正试图在纸箱里面乱蛋蛋壳而不是鸡蛋。
name
是CryptoCurrency
的字段,但.pluck
正在返回CryptoCurrency对象的数组 - 该数组没有name
字段
您必须通过遍历数组(例如,使用.each... do
)或通过索引(@crypto_currencies[0]
)访问元素来获取特定的CryptoCurrency数组元素。
有关如何通过iteration或by element访问数组元素的更多教程信息,请参阅官方文档。