ActiveRecord:如何选择辅助方法结果作为字段?

Cui*_*崔鹏飞 0 ruby activerecord ruby-on-rails rails-activerecord

使用活动记录时,我可以选择以下字段:

Model.select(:a_col,:b_col)
Run Code Online (Sandbox Code Playgroud)

如果模型定义了一些辅助方法,那么我这样做(感觉很蹩脚):

Model.all.map{|m|{a:m.a_col,b:m.b_col,c:m.someMethodCall()}}
Run Code Online (Sandbox Code Playgroud)

有没有办法像这样做?

Model.select(:a_col,:b_col,:someMethodCall)
Run Code Online (Sandbox Code Playgroud)

Sim*_*tti 6

不,这是不可能的.select将符号转换为相应的SQL数据库列

Model.select(:foo)
Run Code Online (Sandbox Code Playgroud)

SELECT foo FROM models
Run Code Online (Sandbox Code Playgroud)

与...相反

SELECT * FROM models
Run Code Online (Sandbox Code Playgroud)

您的数据库不了解Ruby类中定义的方法.因此,您想要实现的目标是不可能的.