Marian Steinbach
2010-Apr-02 12:18 UTC
authlogic and NameError "undefined local variable or method `login''"
Hi! I am using authlogic and I have a User model (with act_as_authentic) without the "login" field, since I use "email" as the user name. As it says in the authlogic documentatation, that should be the way it works when there is no login field. When I create new users manually via the User -> new form, everythings works fine. But: Now I''d like to add user accounts as a side effect when anonymous users fill in a form (actually it''s the "new" form for an entity called SearchSubscription). Now, in my SearchSubscription class, I have this "before_create :assign_user" callback: def assign_user if self.user_id.nil? # find user with the given email address. If not present, create new user. user = User.find(:first, :conditions => {:email => self.email}) if !user.nil? self.user_id = user.id else # User not found, so create one randompassword Base64.encode64(Digest::SHA1.digest("#{rand(1<<64)}/#{Time.now.to_f}/#{Process.pid}/#{login}"))[0..7] user = User.create(:email => self.email, :password => randompassword, :location => self.location) if user.id self.user_id = user.id else flash[:warning] = "Could not create user account" end end end end This works well for email addresses that have a user entry. But whenever I try to create a new SearchSubscription with an unknown email address, I get the following error: NameError (undefined local variable or method `login'' for #<SearchSubscription:0x104099750>): app/models/search_subscription.rb:26:in `assign_user'' app/controllers/search_subscriptions_controller.rb:21:in `create'' I have the impression that somewhere, the "User" class requires the login. But I don''t want to maintain a login field, since I want to use the email address for that. Any ideas? Thanks! Marian -- 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@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Colin Law
2010-Apr-03 06:53 UTC
Re: authlogic and NameError "undefined local variable or method `login''"
On 2 April 2010 13:18, Marian Steinbach <marian-Zy+mNy7mKqiELgA04lAiVw@public.gmane.org> wrote:> Hi! > I am using authlogic and I have a User model (with act_as_authentic) > without the "login" field, since I use "email" as the user name. As it > says in the authlogic documentatation, that should be the way it works > when there is no login field. > > When I create new users manually via the User -> new form, everythings > works fine. > > But: > > Now I''d like to add user accounts as a side effect when anonymous > users fill in a form (actually it''s the "new" form for an entity > called SearchSubscription). > > Now, in my SearchSubscription class, I have this "before_create > :assign_user" callback: > > def assign_user > if self.user_id.nil? > # find user with the given email address. If not present, create new user. > user = User.find(:first, :conditions => {:email => self.email}) > if !user.nil? > self.user_id = user.id > else > # User not found, so create one > randompassword > Base64.encode64(Digest::SHA1.digest("#{rand(1<<64)}/#{Time.now.to_f}/#{Process.pid}/#{login}"))[0..7]What is that login doing in the line above I wonder? I am not quite sure what the [0..7] is for either.> user = User.create(:email => self.email, :password => > randompassword, :location => self.location) > if user.id > self.user_id = user.id > else > flash[:warning] = "Could not create user account" > end > end > end > end > > This works well for email addresses that have a user entry. But > whenever I try to create a new SearchSubscription with an unknown > email address, I get the following error: > > NameError (undefined local variable or method `login'' for > #<SearchSubscription:0x104099750>):The clue is in the error message, it is SearchSubscription that it is complaining about, not User. Colin> app/models/search_subscription.rb:26:in `assign_user'' > app/controllers/search_subscriptions_controller.rb:21:in `create'' > > I have the impression that somewhere, the "User" class requires the > login. But I don''t want to maintain a login field, since I want to use > the email address for that. > > Any ideas? > > Thanks! > > Marian > > -- > 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@googlegroups.com. > 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@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Marian Steinbach
2010-Apr-03 08:32 UTC
Re: authlogic and NameError "undefined local variable or method `login''"
>> Base64.encode64(Digest::SHA1.digest("#{rand(1<<64)}/#{Time.now.to_f}/#{Process.pid}/#{login}"))[0..7] > > What is that login doing in the line above I wonder? > I am not quite sure what the [0..7] is for either.Stupid me. I took that snippet some web page and didn''t even notice that it uses a variable I don''t have. :( The [0..7] might be another way of doing a substring.>> NameError (undefined local variable or method `login'' for >> #<SearchSubscription:0x104099750>): > > The clue is in the error message, it is SearchSubscription that it is > complaining about, not User.Colin, thank you very much! I replaced #{login} with #{self.email} and now it works. Marian -- 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.
Marian Steinbach
2010-Apr-03 08:34 UTC
Re: authlogic and NameError "undefined local variable or method `login''"
>> Base64.encode64(Digest::SHA1.digest("#{rand(1<<64)}/#{Time.now.to_f}/#{Process.pid}/#{login}"))[0..7] > > What is that login doing in the line above I wonder? > I am not quite sure what the [0..7] is for either.Stupid me. I took that snippet some web page and didn''t even notice that it uses a variable I don''t have. :( The [0..7] might be another way of doing a substring. Is it not?>> NameError (undefined local variable or method `login'' for >> #<SearchSubscription:0x104099750>): > > The clue is in the error message, it is SearchSubscription that it is > complaining about, not User.Colin, thank you very much! I replaced #{login} with #{self.email} and now it works. Marian -- 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.
Marian Steinbach
2010-Apr-03 08:34 UTC
Re: authlogic and NameError "undefined local variable or method `login''"
>> Base64.encode64(Digest::SHA1.digest("#{rand(1<<64)}/#{Time.now.to_f}/#{Process.pid}/#{login}"))[0..7] > > What is that login doing in the line above I wonder? > I am not quite sure what the [0..7] is for either.Stupid me. I took that snippet some web page and didn''t even notice that it uses a variable I don''t have. :( The [0..7] might be another way of doing a substring.>> NameError (undefined local variable or method `login'' for >> #<SearchSubscription:0x104099750>): > > The clue is in the error message, it is SearchSubscription that it is > complaining about, not User.Colin, thank you very much! I replaced #{login} with #{self.email} and now it works. Marian -- 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.
Colin Law
2010-Apr-03 12:50 UTC
Re: authlogic and NameError "undefined local variable or method `login''"
On 3 April 2010 09:32, Marian Steinbach <marian-Zy+mNy7mKqiELgA04lAiVw@public.gmane.org> wrote:>>> Base64.encode64(Digest::SHA1.digest("#{rand(1<<64)}/#{Time.now.to_f}/#{Process.pid}/#{login}"))[0..7] >> >> What is that login doing in the line above I wonder? >> I am not quite sure what the [0..7] is for either. > > Stupid me. I took that snippet some web page and didn''t even notice > that it uses a variable I don''t have. :( > > The [0..7] might be another way of doing a substring.Yes, I realised that just after I posted. It is not a syntax that I use regularly. Colin> >>> NameError (undefined local variable or method `login'' for >>> #<SearchSubscription:0x104099750>): >> >> The clue is in the error message, it is SearchSubscription that it is >> complaining about, not User. > > Colin, thank you very much! I replaced #{login} with #{self.email} and > now it works. > > Marian > > -- > 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. > >-- 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.