【发布时间】:2015-08-04 15:20:50
【问题描述】:
我有以下模型验证...
validates :event_id, :uniqueness => {:scope => :email}
validates_format_of :email, :with => /\A[^@]+@([^@\.]+\.)+[^@\.]+\z/
validates_presence_of :email, :first_name, :last_name
..这是我的控制器...
def register_learner
@event = Event.find(params[:event_id])
begin
EventRegistration.create! first_name: params[:first_name], last_name: params[:last_name], email: params[:email], event_id: params[:event_id]
rescue ActiveRecord::RecordInvalid => e
end
end
此代码有效,但问题是它会默默地捕获错误。我想在当前页面中向用户显示一条消息。所以我尝试了这个......
def register_learner
@event = Event.find(params[:event_id])
begin
@registation = EventRegistration.create! first_name: params[:first_name], last_name: params[:last_name], email: params[:email], event_id: params[:event_id]
rescue ActiveRecord::RecordInvalid => e
if !@registation.valid?
flash[:notice] = @registation.errors
end
end
end
...但是如果验证失败,我会收到消息undefined method `valid?' for nil:NilClass。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 validation flash-message