I have a table (ded_masts) that contains all the deductions (and their parameters/characteristics) that a client (company) has instantiated/ authorized - the "parent table". Each employee of the company has records in the child table - deducts - that correspond to the authorized company-level deductions in ded_masts. On recording a new employee, I need to query the ded_masts table and record them in the deducts table and then allow editing. In the legacy system, we query the ded_masts table for all allowed deductions for that company, then iterate through the query creating and saving the employee level deduction records (it is NOT a trigger for several reasons). In Rails, I''ve tried this in the deducts_controller: def create_newee_deducts @dedmasts = DedMast.find(:all, :conditions => ["client_id = ?", params[:clientid]]) for DedMast in @dedmasts @dname = @DedMast.long_name @sname = @dname[0, 9] @deduct = Deduct.new @deduct.client_id = params[:clientid] @deduct.ee_id = params[:neweeid] @deduct.precedence = @DedMast.precedence @deduct.code = @DedMast.code @deduct.name = @sname @deduct.ach_allowed = @DedMast.ach_allowed @deduct.save end end But I get various errors about loading constants and unexpected ends. Is it not possible to access a model from another model''s controller? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Trevor Squires
2008-May-09 16:19 UTC
Re: Adding records to a child table from a parent table
You can access models from *anywhere*. As in, if I have a model called Flange, I can call Flange.find(:all) from anywhere I want. The errors about loading constants and "unepxected ends" points to syntax errors in the files Rails is trying to load for you. The file causing the error is *likely* going to be the one that contains the constant (probably a class or module) that it''s complaining about. I think you need to return to some basics of the Ruby language before continuing though... some of your pasted code tells me that either you don''t really understand the basics of ruby (and ruby ''style'') or you''ve littered your code with careless bugs. DedMast is a class @deduct is an instance variable in your controller @DedMast is ... a disaster waiting to happen. for DedMast in @dedmasts end is just plain wrong. You''re telling ruby to create a variable called DedMast so that it can hold each @dedmast value during the loop. Except DedMast is a constant (your class) so that name is already taken. If you don''t understand the basics of ruby variables and classes then you''re really going to be in a world of pain trying to get anything to work. Take a day or so with the Pickaxe ruby book (google it) and learn the basics. Regards, Trevor On 5/8/08, doodle <m.kruger-Ejo0dU+IsLf3oGB3hsPCZA@public.gmane.org> wrote:> > I have a table (ded_masts) that contains all the deductions (and their > parameters/characteristics) that a client (company) has instantiated/ > authorized - the "parent table". Each employee of the company has > records in the child table - deducts - that correspond to the > authorized company-level deductions in ded_masts. On recording a new > employee, I need to query the ded_masts table and record them in the > deducts table and then allow editing. > > In the legacy system, we query the ded_masts table for all allowed > deductions for that company, then iterate through the query creating > and saving the employee level deduction records (it is NOT a trigger > for several reasons). > > In Rails, I''ve tried this in the deducts_controller: > def create_newee_deducts > @dedmasts = DedMast.find(:all, :conditions => ["client_id = ?", > params[:clientid]]) > for DedMast in @dedmasts > @dname = @DedMast.long_name > @sname = @dname[0, 9] > @deduct = Deduct.new > @deduct.client_id = params[:clientid] > @deduct.ee_id = params[:neweeid] > @deduct.precedence = @DedMast.precedence > @deduct.code = @DedMast.code > @deduct.name = @sname > @deduct.ach_allowed = @DedMast.ach_allowed > @deduct.save > end > end > > But I get various errors about loading constants and unexpected ends. > > Is it not possible to access a model from another model''s controller? > > > >-- -- Trevor Squires http://somethinglearned.com --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---