2016-05-10 3 views
1

私はweight_to_kgクラスメソッドからインスタンスメソッドに電話する必要があります。RailsはInstanceMethodからClassMethodsを呼び出す方法に関係します

私はたくさんの私のモデルのためにkgのコンバーターへの重量を作成したいと思います。

module WeightConvertor 
    extend ActiveSupport::Concern 

    def weight_kg 
    # I need to call weight_to_kg method 
    ClassMethods.weight_to_kg(weight) # does not work 
    end 

    module ClassMethods 
    def weight_to_kg(weight) 
    end 
    end 
end 

class Order < ActiveRecord::Base 
    include WeightConvertor 
    # weight column is present 
end 

Order.first.weight 
Order.first.weight_kg 

どうすればいいですか?

+0

self.class.name.constantize.weight_to_kgインスタンスメソッド内(重量)コールクラスメソッド – Thorin

+0

ありがとう:私はあなたが1以上のモジュールを必要としないと思います!あなたが正しいです –

答えて

6

self.class.weight_to_kg(weight)

0

私は、これは、より簡単に表現することができると思います。

#!/usr/bin/env ruby 

module WeightConverter 

    LB_PER_KG = 2.20462262 

    def weight_kg 
     weight/LB_PER_KG 
    end 
end 


class Order 
    include WeightConverter 
    attr_accessor :weight 

    def initialize(weight) 
     @weight = weight 
    end 
end 

order = Order.new(22.0462262) 
puts "Order weighs #{order.weight} lbs, which is #{order.weight_kg} kg." 

# Output: Order weighs 22.0462262 lbs, which is 10.0 kg. 
関連する問題