我正在尝试更新包含has_many
关联的记录,并希望处理任何错误。如果没有关联但是如果关联无效(例如违反了唯一约束),那么使用update_attributes
可以很好地工作,那么我得到的只是ActiveRecord::RecordNotSaved
错误,但@object.errors
中没有任何内容}。
控制器代码
respond_to do |format|
begin
if @calmapp_version.update_attributes(params[:calmapp_version])
tflash('update', :success, {:model=>@@model, :count=>1})
format.html { redirect_to( :action => "index")}
format.xml { head :ok }
else
format.html { render :action => "edit" }
end
rescue ActiveRecord::RecordNotSaved => e
flash[:error] = @calmapp_version.errors.full_messages
format.html { render :action => "edit" }
end
end
模型
class CalmappVersion < ActiveRecord::Base
has_many :calmapp_versions_translation_languages, :dependent => :destroy
....
end
class CalmappVersionsTranslationLanguage < ActiveRecord::Base
belongs_to :calmapp_version
belongs_to :translation_language
validates :translation_language_id, :uniqueness => {:scope=> :calmapp_version_id}
end
违反唯一性消息的位置在哪里?如何访问它?
答案 0 :(得分:0)
我会尝试使用update_attributes!
。注意!如果记录无效,这将产生异常,并让您更深入地了解出现了什么问题。
答案 1 :(得分:0)
关于另一个问题Where is the violation of uniqueness message and how do I access it?
您可以在此处查看(http://guides.rubyonrails.org/active_record_validations.html#uniqueness)并将消息包含在唯一性哈希中,例如
validates :translation_language_id, :uniqueness => {:scope=> :calmapp_version_id, message => 'There Can Be Only 1'}