[英]Ruby loop through instance methods and run them
我有以下課程:
module StatCalculators
class Passing
def initialize(user_id, game_id)
@user_id = user_id
@game_id = game_id
end
def save_completion_percentage
completions = StatType.find_by_name("Completions").stats.where(athlete_id: @user_id).sum(:float_value)
attempts = StatType.find_by_name("Pass Attempts").stats.where(athlete_id: @user_id).sum(:float_value)
value = completions/attempts
stat = Stat.new(value: value, game_id: @game_id, athlete_id: @user_id, float_value: value)
stat.save(validate: false)
end
end
end
上面的類有可能有更多的方法需要運行而不必單獨調用每個方法...有沒有辦法在initialize方法中運行所有實例方法?
有可能的:
module StatCalculators
class Passing
def initialize(user_id, game_id)
@user_id = user_id
@game_id = game_id
klass = self.class
klass.instance_methods(false).each do |method|
klass.instance_method(method).bind(self).call
end
end
...
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.