2011-12-21 5 views
0

Это мой Taletids стол:Rails массива, как умножить столбец с номером

Price (integer) 
Price2(integer) 

На мой взгляд, у меня есть:

@taletids = Taletid.where(:online => true).order('position') 

Но я хочу, чтобы умножить ценовую колонку с 2.

И добавить «поддельную» колонку к сумме массива @taletids с суммой цены2, умноженной на 2 (params[:tal]) и столбец цены.

Так что я могу назвать сумму в представлении, как это:

<% @taletids.each do |tale| %> 
    <%= tale.sum %> 
<% end %> 

ответ

2

Вы можете добавить метод к вашей Taletids модели, представляющой сумме:

class Taletids < ActiveRecord::Base 
    def sum 
    self.Price + (self.Price2 * 2) 
    end 

    def sum_x(x) 
    self.Price + (self.Price2 * x) 
    end 
end 
+0

Проблемой является только числом должна multipli с основана по параметру –

+0

Умножает умножение с помощью помощника then_ –

+0

Вы можете дать сумму параметра, если хотите. (Я добавил пример к моему ответу). Это обычный метод. Что касается лучших практик, я не уверен, что знаю ответ на вопрос, поможет ли помощник в этом случае. –

1

Если я правильно понять, вы можете добавить метод к вашей модели Taletid (приложение/модели/taletid.rb), который делает расчет, который вы хотите.

def sum 
    (price2 * 2) + price 
end 

Надеюсь, что это поможет.

+0

Проблема только число должна multipli с основан на PARAM –

Смежные вопросы