我有一个名为Tickets的模型即使在 无效时也会保存到数据库中。这阻止了我使用验证来帮助防止 重复数据被保存到数据库。在脚本/控制台数据库中的Rails对象无效
>> Ticket.last.valid?
=> False
>> Ticket.first.valid?
=> False
如果我尝试看看有什么错误与此无效的对象关联
>> Ticket.last.errors.each{|attr,msg| puts "#{attr} - #{msg}\n" }
=> {}
因此,没有人知道它是如何可能一个无效的对象保存到 数据库,以及如何我能找到使对象无效的内容吗?
Ticket.rb(型号)这个问题的
class Ticket < ActiveRecord::Base
belongs_to :whymail
belongs_to :forms
attr_accessible :to_email, :to_email, :from_email, :subject, :body
validates_uniqueness_of :to_email, :scope => [:body, :from_email]
validates_presence_of :to_email
validates_presence_of :from_email
validates_presence_of :subject
validates_presence_of :body
def after_create
if self.valid?
whymail = Whymail.find(:first, :include => :user, :conditions => ['(email = ?)', self.to_email.upcase ])
if !whymail.nil?
self.whymail_id = whymail.id
self.save
MyMailer.deliver_forward(whymail.user.email, self.from_email, self.to_email, self.subject, self.body)
end
end
end
end
,一部分回答,第二个不是。任何人都可以看到这个模型的问题,可以让它保存,即使它是无效的?
这是完全有道理的,它说,我有一个电子邮件地址,我期望(我不希望任何电子邮件保存有相同的,从,和身体)的错误。我的模型有什么问题可以保存,即使无效? 我通过Ticket.create保存在动作邮件收件方法中。 – Schneems 2009-12-09 15:46:16
我想知道它是否通过某种计时器保存后失效。 validates_uniqueness_of不是100%可靠的。我建议在数据库中添加一个约束。 – MattMcKnight 2009-12-10 05:40:36