Oh, I see... Yes, you are right. The relationshiop was later than the callback. If I move it upper then it works all good.
Ok, thank you very much for the answer :) On Jan 11, 2:35 am, Matt Jones <[email protected]> wrote: > Out of curiosity, where is the has_many :projects line in user.rb > relative to the after_save? > At first glance, I would guess that the has_many comes later, which is > could cause this problem - > add_to_project_if_invitation is adding a record to projects, which the > code generated by > add_multiple_associated_save_callbacks (in association.rb) is trying > to save again. > > --Matt Jones > > On Jan 10, 2009, at 11:24 PM, edgarjs wrote: > > > > > Hi, > > > I'm currently building an app that has these models: > > > class Project < ActiveRecord::Base > > has_many :collabs > > has_many :users, :through => :collabs > > end > > > class User < ActiveRecord::Base > > has_many :collabs > > has_many :projects, :through => :collabs > > end > > > # collabs is the "join" model only... > > > class Invitation < ActiveRecord::Base > > belongs_to :project > > end > > > Then in my UsersController#new I check if there is an invitation code, > > if so then I pass a hidden field to the form with the invitation code > > so when the user is saved it's added to the project which was invited > > to. I have this on my user model like this: > > > class User < ActiveRecord::Base > > ... > > attr_accessor :invitation_token > > after_create :add_to_project_by_invitation, :if => lambda { |u| ! > > u.invitation_token.blank? } > > > def add_to_project_by_invitation > > invitation = Invitation.find_by_token(invitation_token) > > projects << invitation.project if invitation && !projects.include? > > (invitation.project) > > end > > end > > > When I invite a user to the project 1 and he tries to signup with the > > invitation token, then this error raises: > > > Mysql::Error: Duplicate entry '1-3' for key 2: INSERT INTO `collabs` > > (`created_at`, `project_id`, `updated_at`, `admin`, `user_id`) VALUES > > ('2009-01-11 04:15:13', 1, '2009-01-11 04:15:13', 0, 3) > > > BUT!, when I just change the after_create callback in my User model to > > before_create it goes all sweetie... > > > I'm using Rails 2.2.2 > > Could this be a bug?... The full stack is here:http://pastie.org/357749 > > > Regards. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en -~----------~----~----~----~------~----~------~--~---
