Проблема здесь в заказе не работает нормально. Значения "gross_profit" не сортируются по порядку, они полностью разупорядочены.Метод заказа неупорядочен мои данные
Ниже я опубликовал часть своего кода без вещей, которые не полагаются на эту проблему (надеюсь).
дб/мигрирует/create_projets.rb:
t.decimal :prix, :precision => 16, :scale => 2
t.decimal :total_expenditures, :precision => 16, :scale => 2
t.decimal :gross_profit, :precision => 16, :scale => 2
Атрибут цена записывается пользователем в форме. Другие рассчитаны в приведенной ниже модели.
дБ/мигрирует/create_depenses.rb:
t.decimal :prix, :precision => 16, :scale => 2
t.decimal :quantite, :default => 1, :precision => 16, :scale => 2
Эти два атрибута записаны пользователем в форме.
приложения/модель/projet.rb:
has_many :depenses
def set_total_expenditures
total_expenditures = 0
self.depenses.each do |d|
total_expenditures += d.quantite*d.prix
end
return total_expenditures
end
def set_gross_profit
self.prix - self.set_total_expenditures
end
def record_all
self.total_expenditures = set_total_expenditures
self.gross_profit = set_gross_profit
end
after_find :record_all
Я построить метод «record_all», потому что кажется, что метод заказа принимает только данные из столбцов, а не данные из простого метода в моей модели ,
приложение/контроллеры/projets_controller.rb:
def index
@projets = Projet.order("gross_margin desc")
end
приложение/просмотров/Projets/index.html.erb:
<table>
<% @projets.each do |p| %>
<tr>
<td><%= p.prix %></td>
<td><%= p.total_expenditures %></td>
<td><%= p.gross_profit %></td>
</tr>
<% end %>
<table>
Я thinked может быть, это потому, что BigDecimals были преобразованы в Float на мгновение в приложении, но эта вещь, как правило, просто приводит к некоторой неточности в худшем случае, так что это не проблема.
Возможно, проблема связана со специальным шаблоном, который я использовал в методе «record_all»? Но я не вижу, где именно, если он здесь ...
Спасибо за помощь.
Да, я удалил 'all' и отредактирован свой пост, он не присутствовал в исходном коде. Это ошибка, когда я разместил здесь свой код, потому что я удалил код, который не полагается на проблему. И, я проверил вариант переупорядочения, но он не решил проблему. У меня есть область по умолчанию (потому что это приложение с несколькими арендаторами), но в этой области по умолчанию нет никакого метода заказа. – Hugololo