1
私は<%= @user.challenges.habit_badge.count %>
をやろうとしていますが、name
の文字列を含めるように範囲を設定する方法がわかりません。habit_badge
に含めたいです。スコープは複数の文字列名をカウントしますか?
scope :habit_badge, -> do
where(name: ('Read 20 Min', 'Run a Mile', 'Meditate 10 Min', etc....))
end
def habit_badge
if name == "Read 20 Min"
ActionController::Base.helpers.image_tag("read.png", class: "gold-star")
elsif name == "Exercise 20 Min"
ActionController::Base.helpers.image_tag("exercise.png", class: "gold-star")
elsif name == "Meditate 10 Min"
ActionController::Base.helpers.image_tag("meditate.png", class: "gold-star")
elsif name == "Stretch 5 Min"
ActionController::Base.helpers.image_tag("stretch.png", class: "gold-star")
elsif name == "Write 500 Words"
ActionController::Base.helpers.image_tag("write.png", class: "gold-star")
elsif name == "Walk 5,000 Steps"
ActionController::Base.helpers.image_tag("walk.png", class: "gold-star")
elsif name == "Eat Fruit & Veg"
ActionController::Base.helpers.image_tag("fruit-and-vegetable.png", class: "gold-star")
elsif name == "Plan Day"
ActionController::Base.helpers.image_tag("plan.png", class: "gold-star")
elsif name == "After Waking, Guzzle Water"
ActionController::Base.helpers.image_tag("water.png", class: "gold-star")
elsif name == "Track Consumption"
ActionController::Base.helpers.image_tag("track-food.png", class: "gold-star")
elsif name == "Random Act of Kindness"
ActionController::Base.helpers.image_tag("random-kindness.png", class: "gold-star")
elsif name == "Write 3 Gratitudes"
ActionController::Base.helpers.image_tag("gratitude.png", class: "gold-star")
elsif name == "Juice Fast"
ActionController::Base.helpers.image_tag("juice.png", class: "gold-star")
elsif name == "Not Smoke"
ActionController::Base.helpers.image_tag("not-smoke.png", class: "gold-star")
elsif name == "Not Drink Alcohol"
ActionController::Base.helpers.image_tag("not-drink.png", class: "gold-star")
else
ActionController::Base.helpers.image_tag("gold-star-maze.png", class: "gold-star")
end
end
完璧なああ!私はとても笑っていた。私は許可されているときにチェックマークをつけますが、その間に私はこれを最も効率的なやり方だと思っていますか?または文字列条件のためのより良い方法がありますか? –
@ AnthonyGalli.comうん、あなたはほとんどそこにいた!スコープに関しては、確かに、それは正しい、効率的な従来の方法です。 'habit_badge'メソッドに関しては**間違いなく**モデルに属していません。それはいくつかのヘルパーやプレゼンターに移動する必要がありますが、確かにモデルではありません。 –