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
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
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
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
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
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