return custom query select in activerecord

前端 未结 2 1744
遥遥无期
遥遥无期 2020-12-10 06:27

I\'ve got a query that does some math and returns a calculated custom select field with the result set. I cannot figure out how to access that in the activerecord object tha

相关标签:
2条回答
  • 2020-12-10 06:36

    You can access it as

    object["percentage_used"]
    
    0 讨论(0)
  • 2020-12-10 06:48

    You neither need nor want attr_accessor for that. attr_accessor creates an instance variable, an accessor method for getting the value of that instance variable, and a mutator method for changing its value. When you say this:

    select('gateways.*, (num_transactions_today/ SUM(num_transactions_today)) AS percentage_used ...
    

    ActiveRecord will automatically add a percentage_used method to the returned objects. But the percentage_used method for accessing that value will be added by method_missing. Since you've said attr_accessor :percentage_used, method_missing will never be called and you can't get at the percentage_used value from the query in the usual way.

    If you drop the attr_accessor :percentage_used, then you'll be able to call percentage_used on objects returned by that select and you'll find the values you're looking for. However, AR won't be able to convert the value to a native Ruby number though so you'll have to to_f the returned string yourself.

    0 讨论(0)
提交回复
热议问题