【发布时间】:2014-08-28 14:32:07
【问题描述】:
在我的代码中:
class User < ActiveRecord::Base
...
scope :matching, -> (column=nil, value=nil) { where("#{column} = ?", value) }
...
end
假设一个有效的public_id: a113f534(不要与:id混淆),当我这样做时:
User.matching("pubid", "a113f534").pluck(:id)
返回:
[1]
如果我这样做:
User.matching("pubid", "a113f534").pluck(&:id)
返回:
[[1, "emaildata@inmydb.com", "$blahsomehash", "moreRandomDBdata", nil, Wed, 27 Aug 2014 18:55:33 UTC +00:00, Wed, 27 Aug 2014 21:22:17 UTC +00:00]]
为什么使用 & 冒号(我知道在符号上调用 to_proc)会返回一个包含我的 id 以及更多数据库列数据的数组,而不是当我只传入符号时,它返回我想要的(只是id)?
我的印象是,对于 Ruby > ~2.0.0,传入 & 符号是可选的,相当于只传入符号。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 activerecord ruby-on-rails-4