我正在编写一个代码,以确保在存在与之关联的子记录时不会删除父记录。
代码如下
class Customer < ActiveRecord::Base
attr_accessible :name, :number
has_many :customer_bills
before_destroy :check_for_bills
private
def check_for_bills
if customer_bills.count > 0
errors.add :base, "cannot delete customer while Bills exist"
return false
end
end
end
<% if flash[:error] -%>
<p class='error'><%=h flash[:error] %></p>
<% end -%>
def destroy
..
flash[:error] = @customer.errors
..
end
但是,虽然代码工作正常,但我没有收到错误消息?什么似乎是问题?任何指导都会有所帮助。
答案 0 :(得分:0)
我认为在Rails 3.2中我们必须使用notice
而不是flash
。
<% if notice %>
<p id="notice"><%= notice %></p>
<% end %>
只需尝试上面的代码和相应的样式
#notice {
color: #000 !important;
border: 2px solid red;
padding: 1em;
margin-bottom: 2em;
background-color: #f0f0f0;
font: bold smaller sans-serif;
}
您可以像以前一样添加错误
def ensure_not_referenced_by_any_line_item
if line_items.empty?
return true
else
errors.add(:base, 'Line Items present')
return false
end
end
我正在学习rails,不确定上面是完美的解决方案......