Помощники используют более функциональный подход:
module ProductsHelper
def tiered_price(product, tier, quantity)
price = case tier
when 1 then product.price * 1.2
when 2 then product.price * 1.4
else product.price * 1.6
end
price * product.quantity
end
end
# view
<%= number_to_currency( tiered_price(@product, 1, 2) ) %>
Но мне кажется, что это было бы лучше в модели:
class Product < ActiveRecord::Base
def tiered_price(tier, quantity)
price = case tier
when 1 then price * 1.2
when 2 then price * 1.4
else price * 1.6
end
price * quantity
end
end
# view
<%= number_to_currency(@product.tiered_price(1, 2)) %>
Если вы действительно хотите иметь возможностьнапишите @ product.tier_one_quanity_two, как find_by_name, вам нужно подключиться к method_missing, который имеет некоторую сложность и скорость, но будет выглядеть примерно так: