Getting typed results from ActiveRecord raw SQL

后端 未结 6 2024
Happy的楠姐
Happy的楠姐 2020-12-29 20:51

In Sequel, I can do:

irb(main):003:0> DB[\"select false\"].get
=> false

Which returns a false boolean. I\'d like to be able to do so

6条回答
  •  长发绾君心
    2020-12-29 21:16

    I don't know if it is the way, but you can create activerecord model without table with sort of fake column:

    class FunctionValue < ActiveRecord::Base
      def self.columns
        @columns ||= [];
      end
    
      def self.column(name, sql_type = nil, default = nil, null = true)
        columns << ActiveRecord::ConnectionAdapters::Column.new(
          name.to_s,
          default,
          sql_type.to_s,
          null
        )
      end
    
      column :value, :boolean
    end
    

    And then you can run this:

    function_value = FunctionValue.find_by_sql('select false as value').first
    function_value.value
    

提交回复
热议问题