是否有可能在轨道上的红宝石中做这样的事情?
SELECT * FROM
(
SELECT petID as pet,sum(numpet) as numberofpets
FROM petTable
GROUP BY petID
) base
pivot
(
COUNT(SUM(numpet)) FOR petid IN ([1],[2],[3])
) AS pivottable
更新:为了澄清,这与Rails中的scope类方法没有特别的关系。我可能应该避免在最初询问时使用术语“范围”,以避免混淆。请随意将其视为def method(scope: 'all') # so that it would use Model.all by default
Model.scope
end
method(scope: 'last(10)') # to get it to call Model.last(10)
。将保留原始陈述的问题,以保留历史作为其中的答案之一。
答案 0 :(得分:2)
您可以在模型本身中定义相应的范围,以便使用和不使用参数进行处理..
scope :scoping, ->(method = 'all') { send(method) }
scope :scoping_with_arg, ->(method = 'limit', arg = 1) { send(method, arg) }
然后,
Model.scoping('first')
Model.scoping_with_arg('last', 10)
答案 1 :(得分:0)
我通过使用ruby的BEGIN TRAN
UPDATE t
SET email =
REPLACE(
emailIn
, SUBSTRING(
emailIn
, CHARINDEX('@', emailIn)
, LEN(emailIn) - CHARINDEX(emailIn, '@')
)
, '@gmail.com'
)
COMMIT TRAN
和#send
并使用数组来支持具有多个参数的模型范围,从而找到了如何:
keyword arguments