I'm using ruby 1.8.7
Hello everybody i'm trying to put a conditional in an array but i'm getting an error. I want
if policy.date_ini >= insurance.initial_date then
do sum of all net_ensurance where date_ini >= initial_date
else
show the last insurance
end
Tables
|policies|
|id| |date_ini| |num_policy|
1 2013-02-30 1234
|insurances|
|id| |policy_id| |initial_date| |net_ensurance|
1 1 2013-03-30 1000
2 1 2013-02-30 2000
3 1 2012-12-05 5000
And i should have
|num_policy| |sum_net_ensurance|
1234 3000
Here is my controller
@policies = Policy.find(:all)
Here is my model
class Policy < ActiveRecord::Base
has_many :insurances
end
class Insurance < ActiveRecord::Base
belongs_to :policy
end
Here is my view
<% @policies.each do |policy| %>
<%= policy.num_policy %>
<% if policy.date_ini >= policy.insurances.initial_date %>
<%= policy.insurances.sum(:net_insurance) %>
<% else %>
<% policy.insurances.last(1).each do |insurance| %>
<%= insurance.net_insurance %>
<% end %>
<% end %>
<% end %>
I'm gettins this error
undefined method `initial_date' for #<Class:0x7f30aa1ea398>
Also i tried
<% if policy.date_ini >= policy.insurances.try(:initial_date) %>
<%= policy.insurances.sum(:net_insurance) %>
<% else %>
<% policy.insurances.last(1).each do |insurance| %>
<%= insurance.net_insurance %>
<% end %>
<% end %>
Please somebody can help me please?
I will really appreciate help
The initial error:
undefined method `initial_date' for #<Class:0x7f30aa1ea398>
Is probably due to the fact that you're calling initial_date
on insurances
(which is an array)
What you'd want to do is pick the specific insurance you want to work with. So it would be something like this:
policy.insurances.first.initial_date
or
policy.insurances.last.initial_date