モデルの属性にアクセスし、いくつかのメソッドを使用してrakeタスクで実行する方法を考えていました.読んだものから、タスクの外部でメソッドを宣言する必要がありますが、モデルにアクセスするとスローされます.
これ入れたら分かる
namespace :grab do
task :scores => :environment do
puts User.all.inspect
end
end
次に、すべてのユーザーを印刷します
以下は私が達成しようとしているものです
レイクタスク
namespace :grab do
task :scores => :environment do
points_total
allocate_points
end
end
def points_total
wrong_predictions = [Prediction.home_score - Result.home_score, Prediction.away_score - Result.away_score]
wrong_predictions = wrong_predictions.reject { |i| i == 0 }.size # returns 0, 1 or 2
case wrong_predictions
when 0 then 3
when 1 then 1
else 0
end
end
def allocate_points
Prediction.update_attributes!(score: points_total)
end
したがって、これらのメソッドを実行するには、予測モデルと結果モデルにアクセスする必要があります...
どんな助けでも大歓迎
ありがとう
編集
上記のようにタスクを実行すると、次のエラーが表示されます
rake aborted!
undefined method `home_score' for #<Class:0x4b651c0>
また、ここで更新するのは私のモデルです
class Prediction < ActiveRecord::Base
attr_accessible :away_score, :away_team, :fixture_id, :home_score, :home_team, :score
has_one :fixture
end
class Result < ActiveRecord::Base
attr_accessible :away_score, :away_team, :fixture_date, :home_score, :home_team
end