hello there, i have a problem. i have my own complicated way that i want(must) save in the db i have a form for some table ("factions" in my cans, each field in the form goes to a single row of the "faction_contents" table, and then the id of that row goes to the table "factions" in the row of which the form field is for. its a complicated thing and ugly, i know, but i don''t want suggestions to not do it, i simply want you to see what i did wrong with my function and help me fix it. this is my function: def save_id(arguments, tables) arguments_id = arguments arguments.each_pair do |key, value| pair = { :english => value} tables["content"].new.save(pair) content_id = tables["content"].find(:first, :order => "id DESC").id # @pair2 = {key => @text_id} arguments_id[key] = content_id end tables["table"].new.save(arguments_id) end the arguments are the parameters i get from the form the tables variable holds the models i use and looks like this: TABLES = {"table" => Faction, "content" => FactionContent} the problem is when I do call this function it doesn''t put any content in the db, it makes rows that their fields are NULL. now people. i once again tell because it''s important. I know it''s and I know there must be a simpler and easier way, but please just help me fix this function and don''t suggest other ways. TY -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
TEREN wrote:> > this is my function: > def save_id(arguments, tables) > arguments_id = arguments > arguments.each_pair do |key, value| > pair = { :english => value} > tables["content"].new.save(pair) > content_id = tables["content"].find(:first, :order => "id > DESC").id > # @pair2 = {key => @text_id} > arguments_id[key] = content_id > end > tables["table"].new.save(arguments_id) > end > > the arguments are the parameters i get from the form > the tables variable holds the models i use and looks like this: > TABLES = {"table" => Faction, "content" => FactionContent} >Well... can you show us what an actual POST looks like from your log? It would help to see the contents of the actual params hash. -- Posted via http://www.ruby-forum.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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
sorry but I''m kinda new with rails, i don''t know how to get a log of the hash itself. how do I do that? On Thu, Sep 23, 2010 at 4:49 PM, Ar Chron <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> TEREN wrote: > > > > this is my function: > > def save_id(arguments, tables) > > arguments_id = arguments > > arguments.each_pair do |key, value| > > pair = { :english => value} > > tables["content"].new.save(pair) > > content_id = tables["content"].find(:first, :order => "id > > DESC").id > > # @pair2 = {key => @text_id} > > arguments_id[key] = content_id > > end > > tables["table"].new.save(arguments_id) > > end > > > > the arguments are the parameters i get from the form > > the tables variable holds the models i use and looks like this: > > TABLES = {"table" => Faction, "content" => FactionContent} > > > > Well... can you show us what an actual POST looks like from your log? > It would help to see the contents of the actual params hash. > -- > Posted via http://www.ruby-forum.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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org<rubyonrails-talk%2Bunsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org> > . > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Almog Friedman wrote:> sorry but I''m kinda new with rails, i don''t know how to get a log of the > hash itself. > how do I do that?development.log should be in a folder like: C:\rails\appname\log\development.log or home\druid\rails\appname\log\development.log in a *nix envt. -- Posted via http://www.ruby-forum.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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Almog Friedman
2010-Sep-23 19:51 UTC
Re: Re: Re: problem with complex function to save in db
heres the log hope it''ll help: Processing FactionsController#index (for 127.0.0.1 at 2010-09-23 16:03:25) [GET] SQL (0.1ms) SET NAMES ''utf8'' SQL (0.1ms) SET SQL_AUTO_IS_NULL=0 Faction Load (0.4ms) SELECT * FROM `factions` Rendering template within layouts/factions Rendering factions/index Faction Columns (0.8ms) SHOW FIELDS FROM `factions` Completed in 89ms (View: 83, DB: 1) | 200 OK [http://localhost/factions] Processing FactionsController#new (for 127.0.0.1 at 2010-09-23 21:46:35) [GET] SQL (0.1ms) SET NAMES ''utf8'' SQL (0.1ms) SET SQL_AUTO_IS_NULL=0 Faction Columns (0.8ms) SHOW FIELDS FROM `factions` Rendering template within layouts/factions Rendering factions/new Completed in 43ms (View: 38, DB: 1) | 200 OK [http://localhost/factions/new] Processing FactionsController#create (for 127.0.0.1 at 2010-09-23 21:46:39) [POST] Parameters: {"commit"=>"Create", "authenticity_token"=>"1f1aa67b947f0e23dc19aad8debc1e63b6df002c", "faction"=>{"name"=>"asdasd", "name_plural"=>"asdasd", "description"=>"asdasdasd"}} SQL (0.1ms) SET NAMES ''utf8'' SQL (0.1ms) SET SQL_AUTO_IS_NULL=0 Faction Columns (0.9ms) SHOW FIELDS FROM `factions` FactionContent Columns (0.7ms) SHOW FIELDS FROM `faction_contents` SQL (0.1ms) BEGIN FactionContent Create (7.4ms) INSERT INTO `faction_contents` (`created_at`, `updated_at`, `english`) VALUES(''2010-09-23 19:46:39'', ''2010-09-23 19:46:39'', NULL) SQL (29.0ms) COMMIT FactionContent Load (0.3ms) SELECT * FROM `faction_contents` ORDER BY id DESC LIMIT 1 SQL (0.0ms) BEGIN FactionContent Create (0.2ms) INSERT INTO `faction_contents` (`created_at`, `updated_at`, `english`) VALUES(''2010-09-23 19:46:39'', ''2010-09-23 19:46:39'', NULL) SQL (31.1ms) COMMIT FactionContent Load (0.2ms) SELECT * FROM `faction_contents` ORDER BY id DESC LIMIT 1 SQL (0.0ms) BEGIN FactionContent Create (0.1ms) INSERT INTO `faction_contents` (`created_at`, `updated_at`, `english`) VALUES(''2010-09-23 19:46:39'', ''2010-09-23 19:46:39'', NULL) SQL (31.3ms) COMMIT FactionContent Load (0.2ms) SELECT * FROM `faction_contents` ORDER BY id DESC LIMIT 1 SQL (0.1ms) BEGIN Faction Create (0.2ms) INSERT INTO `factions` (`name`, `created_at`, `updated_at`, `name_plural`, `description`) VALUES(NULL, ''2010-09-23 19:46:39'', ''2010-09-23 19:46:39'', NULL, NULL) SQL (29.8ms) COMMIT Redirected to actionindex Completed in 147ms (DB: 132) | 302 Found [http://localhost/factions] Processing FactionsController#index (for 127.0.0.1 at 2010-09-23 21:46:39) [GET] SQL (0.1ms) SET NAMES ''utf8'' SQL (0.1ms) SET SQL_AUTO_IS_NULL=0 Faction Load (0.6ms) SELECT * FROM `factions` Rendering template within layouts/factions Rendering factions/index Faction Columns (0.9ms) SHOW FIELDS FROM `factions` Completed in 85ms (View: 80, DB: 2) | 200 OK [http://localhost/factions] any help? On Thu, Sep 23, 2010 at 9:01 PM, Ar Chron <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Almog Friedman wrote: > > sorry but I''m kinda new with rails, i don''t know how to get a log of the > > hash itself. > > how do I do that? > > development.log should be in a folder like: > > C:\rails\appname\log\development.log > > or > > home\druid\rails\appname\log\development.log in a *nix envt. > -- > Posted via http://www.ruby-forum.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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org<rubyonrails-talk%2Bunsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org> > . > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Almog Friedman wrote:> heres the log hope it''ll help: >Processing FactionsController#create (for 127.0.0.1 at 2010-09-23 21:46:39) [POST] Parameters: {"commit"=>"Create", "authenticity_token"=>"1f1aa67b947f0e23dc19aad8debc1e63b6df002c", "faction"=>{"name"=>"asdasd", "name_plural"=>"asdasd", "description"=>"asdasdasd"}} FactionContent Create (7.4ms) INSERT INTO `faction_contents` (`created_at`, `updated_at`, `english`) VALUES(''2010-09-23 19:46:39'', ''2010-09-23 19:46:39'', NULL) no values for ''english'' in any of the inserts I think you''re over-complicating things... In factions_controller.rb: def create # just grab the hash for the model being saved hash = params[:faction] # do the string to content record id magic hashnew = save_ids(hash) # save a new Faction record Faction.create(hashnew) # find the one just saved @faction = Faction.find(:last, :order => ''id'') end And wherever you have this stored: def save_ids(arguments) # saving the content is table agnostic, don''t need that parameter # new empty hash to return ret = Hash.new # for the incoming arguments hash arguments.each_pair { |key,value| # store each value in Contents Content.create(:english => value) # find the record just written content = Content.find(:last, :order => ''id'') # replace the string just stored with a stringified id from Contents ret[key] = content.id.to_s } # return our new hash return ret end worked for me... -- Posted via http://www.ruby-forum.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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Hmm... maybe you do need a table name involved: Controller: def create hash = params[:faction] hashnew = save_ids(hash, ''FactionContent'') Faction.create(hashnew) @faction = Faction.find(:last, :order => ''id'') end And that other routine: def save_ids(arguments, table) ret = Hash.new arguments.each_pair {|key, value| table.constantize.create(:english => value) content = table.constantize.find(:last, :order => ''id'') ret[key] = content.id.to_s } return ret end -- Posted via http://www.ruby-forum.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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Almog Friedman
2010-Sep-24 13:21 UTC
Re: Re: Re: Re: problem with complex function to save in db
ok, i think this should work ty very much. i really appreciate it. but I have one question, I didn''t quite understand why did you put that: @faction = Faction.find(:last, :order => ''id'') at the end of the controller action. On Thu, Sep 23, 2010 at 11:51 PM, Ar Chron <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Hmm... maybe you do need a table name involved: > > Controller: > > def create > hash = params[:faction] > hashnew = save_ids(hash, ''FactionContent'') > Faction.create(hashnew) > @faction = Faction.find(:last, :order => ''id'') > end > > And that other routine: > > def save_ids(arguments, table) > ret = Hash.new > arguments.each_pair {|key, value| > table.constantize.create(:english => value) > content = table.constantize.find(:last, :order => ''id'') > ret[key] = content.id.to_s > } > return ret > end > -- > Posted via http://www.ruby-forum.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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org<rubyonrails-talk%2Bunsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org> > . > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Ar Chron
2010-Sep-24 16:11 UTC
Re: Re: Re: Re: problem with complex function to save in db
Almog Friedman wrote:> I didn''t quite understand why did you put > that: @faction = Faction.find(:last, :order => ''id'') at the end of the > controller action.In the code I posted, there is no @faction object populated from the params, and standard routing after a create is to go to the show for that @faction (the usual respond_to do |format| block). Faction.create doesn''t create one either, so I retrieved the one just created. -- Posted via http://www.ruby-forum.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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Almog Friedman
2010-Sep-24 17:00 UTC
Re: Re: Re: Re: Re: problem with complex function to save in db
yea mannered to figure it out eventually. well again i wanna thank you, it worked(with slight modifications to fit right) thank you so very much. I''ve been trying to make this function work for over a week and you solved it less than a day. On Fri, Sep 24, 2010 at 6:11 PM, Ar Chron <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Almog Friedman wrote: > > I didn''t quite understand why did you put > > that: @faction = Faction.find(:last, :order => ''id'') at the end of the > > controller action. > > In the code I posted, there is no @faction object populated from the > params, and standard routing after a create is to go to the show for > that @faction (the usual respond_to do |format| block). > > Faction.create doesn''t create one either, so I retrieved the one just > created. > -- > Posted via http://www.ruby-forum.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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org<rubyonrails-talk%2Bunsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org> > . > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.