ActiveRecord:如何将 select 辅助方法结果作为字段?
ActiveRecord: how to select helper method result as a field?
当使用活动记录时,我可以 select 像这样的字段:
Model.select(:a_col,:b_col)
如果模型定义了一些辅助方法,那么我正在这样做(感觉很蹩脚):
Model.all.map{|m|{a:m.a_col,b:m.b_col,c:m.someMethodCall()}}
有这样的方法吗?
Model.select(:a_col,:b_col,:someMethodCall)
不,这是不可能的。 select
将符号翻译成相应的 SQL 数据库列
Model.select(:foo)
变成
SELECT foo FROM models
与
相反
SELECT * FROM models
您的数据库不知道 Ruby class 中定义的方法。因此,您想要实现的目标是不可能的。
当使用活动记录时,我可以 select 像这样的字段:
Model.select(:a_col,:b_col)
如果模型定义了一些辅助方法,那么我正在这样做(感觉很蹩脚):
Model.all.map{|m|{a:m.a_col,b:m.b_col,c:m.someMethodCall()}}
有这样的方法吗?
Model.select(:a_col,:b_col,:someMethodCall)
不,这是不可能的。 select
将符号翻译成相应的 SQL 数据库列
Model.select(:foo)
变成
SELECT foo FROM models
与
相反SELECT * FROM models
您的数据库不知道 Ruby class 中定义的方法。因此,您想要实现的目标是不可能的。