我正在使用ruby 1.8.7
大家好我想把一个条件放在一个数组中,但是我收到了一个错误。 我想要
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
表
|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
我应该
|num_policy| |sum_net_ensurance|
1234 3000
这是我的控制器
@policies = Policy.find(:all)
这是我的模特
class Policy < ActiveRecord::Base
has_many :insurances
end
class Insurance < ActiveRecord::Base
belongs_to :policy
end
这是我的观点
<% @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 %>
我得到了这个错误
undefined method `initial_date' for #<Class:0x7f30aa1ea398>
我也试过
<% 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 %>
请有人可以帮助我吗?
我真的很感激帮助
答案 0 :(得分:1)
初始错误:
undefined method `initial_date' for #<Class:0x7f30aa1ea398>
可能是因为您在initial_date
(这是一个数组)上调用了insurances
您想要做的是选择您想要使用的特定保险。所以它会是这样的:
policy.insurances.first.initial_date
或
policy.insurances.last.initial_date
答案 1 :(得分:0)
policy.insurances
代码问题。你正在处理关系。
你需要使用真正的保险对象并进行比较。
例如
policy.insurances.first