Hi, all! Maybe a noob question, sorry, but I''m really stuck with this. I have 2 models with has_many and belongs_to associations. class Transaction < ActiveRecord::Base has_many :bonuses, :class_name => ''TransactionBonus'' end class TransactionBonus < ActiveRecord::Base belongs_to :transaction end The problem is that I cannot save TransactionBonus record to the database - it''s simply doesn''t do anything! I have another models in my application, and all of them are saved just fine TransactionBonus is the only exception Table structure matches exactly the model records: CREATE TABLE IF NOT EXISTS `transaction_bonuses` ( `id` int(11) NOT NULL auto_increment, `transaction_id` int(11) NOT NULL, `taken_bonus` float default NULL, `collected_bonus` float default NULL, `final_sum` float default NULL, `created_at` datetime default NULL, `updated_at` datetime default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; Here is my irb console output with test records:>> transaction=Transaction.find(1)=> #<Transaction id: 1, card_account_id: 1, created_at: "2008-09-01 13:48:10", updated_at: "2008-09-01 13:48:10">>> transaction.bonuses=> []>> bonus=transaction.bonuses.create(:transaction_id => 1, :final_sum => 99)=> #<TransactionBonus id: nil, transaction_id: 1, final_sum: 99.0, created_at: nil, updated_at: nil>>> transaction.bonuses=> [#<TransactionBonus id: nil, transaction_id: 1, final_sum: 99.0, created_at: nil, updated_at: nil>]>> bonus.save=> #<Transaction id: 1, card_account_id: 1, created_at: "2008-09-01 13:48:10", updated_at: "2008-09-01 13:48:10">>> bonus=> #<TransactionBonus id: nil, transaction_id: 1, final_sum: 99.0, created_at: nil, updated_at: nil> After that I have tried to initialize TransactionBonus record directly, but no success: >> bonus = TransactionBonus.create( :transaction_id => 1 ) => #<TransactionBonus id: nil, transaction_id: 1, final_sum: nil, created_at: nil, updated_at: nil> >> bonus => #<TransactionBonus id: nil, transaction_id: 1, final_sum: nil, created_at: nil, updated_at: nil> >> bonus.save => #<Transaction id: 1, card_holder_id: 0, card_account_id: 1, created_at: "2008-09-01 13:48:10", updated_at: "2008-09-01 13:48:10"> >> bonus => #<TransactionBonus id: nil, transaction_id: 1, final_sum: nil, created_at: nil, updated_at: nil> Please, note id: nil for the bonus var, it means that the record is not saved to the database. This is really mysterious for me... --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
On Sep 2, 8:51 pm, rasfast <rasf...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Hi, all! > > Maybe a noob question, sorry, but I''m really stuck with this. > I have 2 models with has_many and belongs_to associations. > class Transaction < ActiveRecord::Base > has_many :bonuses, :class_name => ''TransactionBonus'' > end > class TransactionBonus < ActiveRecord::Base > belongs_to :transaction > end >Don''t call your model transaction - you''re overriding some internal activerecord methods. Fred> The problem is that I cannot save TransactionBonus record to the > database - it''s simply doesn''t do anything! > I have another models in my application, and all of them are saved > just fine > TransactionBonus is the only exception > > Table structure matches exactly the model records: > CREATE TABLE IF NOT EXISTS `transaction_bonuses` ( > `id` int(11) NOT NULL auto_increment, > `transaction_id` int(11) NOT NULL, > `taken_bonus` float default NULL, > `collected_bonus` float default NULL, > `final_sum` float default NULL, > `created_at` datetime default NULL, > `updated_at` datetime default NULL, > PRIMARY KEY (`id`) > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; > > Here is my irb console output with test records: > > >> transaction=Transaction.find(1) > > => #<Transaction id: 1, card_account_id: 1, created_at: > "2008-09-01 13:48:10", updated_at: "2008-09-01 13:48:10"> > > >> transaction.bonuses > > => [] > > >> bonus=transaction.bonuses.create(:transaction_id => 1, :final_sum => 99) > > => #<TransactionBonus id: nil, transaction_id: 1, final_sum: 99.0, > created_at: nil, updated_at: > nil> > > >> transaction.bonuses > > => [#<TransactionBonus id: nil, transaction_id: 1, final_sum: 99.0, > created_at: nil, updated_at: > nil>] > > >> bonus.save > > => #<Transaction id: 1, card_account_id: 1, created_at: > "2008-09-01 13:48:10", updated_at: "2008-09-01 13:48:10"> > > >> bonus > > => #<TransactionBonus id: nil, transaction_id: 1, final_sum: 99.0, > created_at: nil, updated_at: > nil> > > After that I have tried to initialize TransactionBonus record > directly, but no success: > > >> bonus = TransactionBonus.create( :transaction_id => 1 ) > => #<TransactionBonus id: nil, transaction_id: 1, final_sum: nil, > created_at: nil, updated_at: nil> > > >> bonus > => #<TransactionBonus id: nil, transaction_id: 1, final_sum: nil, > created_at: nil, updated_at: nil> > > >> bonus.save > => #<Transaction id: 1, card_holder_id: 0, card_account_id: 1, > created_at: "2008-09-01 13:48:10", updated_at: "2008-09-01 > 13:48:10"> > > >> bonus > => #<TransactionBonus id: nil, transaction_id: 1, final_sum: nil, > created_at: nil, updated_at: nil> > > Please, note id: nil for the bonus var, it means that the record is > not saved to the database. > > This is really mysterious for me...--~--~---------~--~----~------------~-------~--~----~ 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@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
rasfast wrote:> >> bonus = TransactionBonus.create( :transaction_id => 1 ) > => #<TransactionBonus id: nil, transaction_id: 1, final_sum: nil, > created_at: nil, updated_at: nil>Try using create! to see if the problem is with validation or due to a false-returning pre-save callback. -- Rails Wheels - Find Plugins, List & Sell Plugins - http://railswheels.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 -~----------~----~----~----~------~----~------~--~---