[Rails] Re: ActiveRecord::Base.transaction - SystemStackError - stack level too deep:
This is the TransactionAttributes
module TransactionAttributes
def success
success
end
def success=(success)
self.success = success
end
def errors
errors
end
def errors=(errors)
self.errors = errors
end
end
The reason for these was i was trying to set a property on a returned object or the errors. I yet to figure out a way i can return a more descriptive error message from the transaction back to the controller.
I'll fix the style note. That just happens to populate when using a tab trigger in Sublime.
I'll fix the style note. That just happens to populate when using a tab trigger in Sublime.
This is the table schema
# == Schema Information
#
# Table name: resources
#
# id :integer not null, primary key
# resource_name :string(255)
# teacher_id :integer
# student_id :integer
# source_id :string(255)
# created_at :datetime not null
# updated_at :datetime not null
# resource_type :string(255)
#
The SystemStackError - stack level too deep:
actionpack (3.2.13) lib/action_dispatch/middleware/reloader.rb:70:in `'
is the only thing i get in the console.
This is whats returned in the response.
SystemStackError at /resources
==============================
> stack level too deep
actionpack (3.2.13) lib/action_dispatch/middleware/reloader.rb, line 70
-----------------------------------------------------------------------
``` ruby
65 response = @app.call(env)
66 response[2] = ActionDispatch::BodyProxy.new(response[2]) { cleanup! }
67 response
68 rescue Exception
69 cleanup!
> 70 raise
71 end
72
73 def prepare! #:nodoc:
74 run_callbacks :prepare if validated?
75 end
```
App backtrace
-------------
Full backtrace
--------------
- actionpack (3.2.13) lib/action_dispatch/middleware/reloader.rb:70:in `'
based on a SO i read it said to turn on the Rails.backtrace_cleaner.remove_silencers!
so ive dont that.
Is there something else i can do to that would be helpful?
On Saturday, June 22, 2013 5:06:54 PM UTC-6, Bob O wrote:
Im having an issue that seems to only happen when trying to use a transaction. Ive used transactions many times in the past and Im at a loss as to why im getting the stack level too deep problem.SystemStackError - stack level too deep:actionpack (3.2.13) lib/action_dispatch/middleware/reloader.rb:70:in `' I have a StackOveflow with more detail - http://stackoverflow.com/q/16930511/1408461 As stated in the SO. If I try to save the record to the database outside the transaction it saves just fine. I only get the error in the transaction.Params Objectparams => { "resource"=> { "resource_type"=>"document", "resource_name"=>"My Rails Doc", "source_id"=>"Dropbox" }, "resource_document"=> { "resource_document"=> #<ActionDispatch::Http::UploadedFile:0x007f8e919d06f8 @content_type="text/plain", @headers= "Content-Disposition: form-data; name=\"resource_document[resource_document]\"; filename=\"rails_local_env_ , @original_filename="rails_setup.txt\"\r\n Content-Type: text/plain\r\n" local_env_setup.txt" , @tempfile= #<File:/var/folders/t4/lfmj7mhj52b2krryzh7dj4hh0000gn "action"=>"create", "controller"=>"resources" }/T/RackMultipart20130604- 29589-2c0seo>>}, **Controller**def create if current_teacher @resource = ResourceObject.create_teacher_resource (params, current_teacher) end if current_student @resource = ResourceObject.create_student_resource (params, current_student) end if current_admin @resource = Resource.new(params[:resource]) end respond_to do |format| if @resource.success format.html { redirect_to @resource, notice: 'Resource was successfully created.' } format.json { render json: @resource, status: :created, location: @resource } else format.html { render action: "new" } format.json { render json: @resource.errors, status: :unprocessable_entity } end end end**Transaction**class ResourceObject def self.create_teacher_resource(params , teacher) begin ActiveRecord::Base.transaction do # Create Resource @resource = Resource.new @resource.resource_name = params[:resource][:resource_name ] @resource.resource_type = params[:resource][:resource_type ] @resource.source_id = params[:resource][:source_id] @resource.teacher_id = teacher.id @resource.save # Create Resource Document @resource_document = ResourceDocument.new @resource_document.resource_document = params[:resource_document][:resource_document ] @resource_document.resource_id = @resource.id @resource_document.save # TODO Add Commom Core Joins # TODO Video Uploader # TODO Image Uploader return @resource.success = "ok" end rescue Exception => e # TODO Need to figure out how to pass exception message back to controller return @resource.errors end end endendResource Modelclass Resource < ActiveRecord::Base include TransactionAttributes attr_accessible :resource_name, :resource_type, :source_id, :teacher_id, :student_id, :success, :errors belongs_to :teacher, :class_name => "Teacher", :foreign_key => "teacher_id" belongs_to :student, :class_name => "Student", :foreign_key => "student_id" has_many :resource_documents # has_many :resource_images # has_many :resource_videos # has_many :question_resources # has_many :assignment_resources end
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/ae915f25-9479-4366-bcee-3700c4184d28%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home