Предоставление призов в зависимости от user_plan и duration_days - PullRequest
0 голосов
/ 06 февраля 2020

Для однодневного путешествия у нас есть этот помощник, отлично работающий для предоставления призов в зависимости от плана пользователя.

  def cost_inscription
    if user_signed_in?
      case current_user.plan_id
      when 1 
        6
      when 2 
        3
      when 3 
        1
      end 
     else
        16
    end
  end

В настоящее время у нас есть призовая таблица (3x5) плана пользователя и поездки. продолжительность: 1,2,3,4 o + дней. Как получить стоимость надписи, указав две переменные: user_plan и продолжительность дня поездки.

Уверен, что у вас есть один хороший помощник для этого! Дайте мне знать, спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

помощник

def inscription_pd_id(ndays)
if user_signed_in? && current_user.plan_id == 0 #SIMPATITZANT
  case ndays
  when 1
    4  
  when 2 
    8
  when 3 
    12
  when 4 
    16
  when 5 
    20        
  end
end
if user_signed_in? && current_user.plan_id == 1 #ESPORÀDIC
  case ndays
  when 1
    5  
  when 2 
    9
  when 3 
    13
  when 4 
    17
  when 5 
    21        
  end
end
if user_signed_in? && current_user.plan_id == 2 #FREQÜENT
  case ndays
  when 1
    6  
  when 2 
    10
  when 3 
    14
  when 4 
    18
  when 5 
    22        
  end
end
if user_signed_in? && current_user.plan_id == 3 #HABITUAL
  case ndays
  when 1
    7  
  when 2 
    11
  when 3 
    15
  when 4 
    19
  when 5 
    23        
  end
end
  end

контроллер

  def show

    @sortide = Sortide.friendly.find(params[:id])

    @product = Product.find(helpers.inscription_pd_id(@sortide.ndays).to_i) 

     end

просмотр

<%= @sortide.ndays %>
<%= current_user.plan_id %>
<%= @product.prize %>

Я знаю, что это не изумительно, но это работает. Ищете более чистое / приятное решение.

0 голосов
/ 06 февраля 2020

Построить постоянную га sh с описанием призов. Здесь длительность - это ключ и планы хранятся в виде хешей со значением по умолчанию .

PRIZES = {
  1 => {1 => 6, 2 => 3, 3 => 1}.tap { |h| h.default = 16 },
  2 => {1 => 6, 2 => 3, 3 => 1}.tap { |h| h.default = 14 },
  3 => {1 => 6, 2 => 3, 3 => 1}.tap { |h| h.default = 12 },
  4 => {1 => 6, 2 => 3, 3 => 1}.tap { |h| h.default = 10 },
  5 => {1 => 6, 2 => 3, 3 => 1}.tap { |h| h.default = 8 }
}.freeze

def cost_inscription(duration, plan)
  PRIZES[duration][plan]
end
...