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:inassign_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
On 2 April 2010 13:18, Marian S. [email protected] wrote:
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.
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.
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
On 3 April 2010 09:32, Marian S. [email protected] 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