Hi fellow RoR'ers,
I have a Rails app, where a user can subscribe and unsubscribe from a mailinglist. To unsubscribe, the user can fill in their email address in a form field.
But I have no idea how to delete the record from the database, using the typed in data from the user. I've tried it with the following code, but doesn't seem to work.
@email = Email.find(:all, :conditions => [ "mail = ?", params[:mail]]) @email.delete(:id)
--> no error, but nothing happens
There's no instance method #delete, AFAIK. What does @email contain? Should you be using be "params[:email][:mail]" instead? A shorter way to do it would be with Email.destroy_all, or, if you're really sure, Email.delete_all.
Or this way, didn't work either,
Email.find_by_mail(params[:email][:mail]).destroy!
--> then I got the following error: undefined method `find_by_mail' for Email:Class
Any ideas?
I'd expect #find_by_mail to work so long as:
* Email derives from ActiveRecord::Base, and * there is a column called 'mail' on the corresponding table.
Which leads me to two questions:
* Does your class declaration start with "class Email < ActiveRecord::Base"? * Have you migrated your database appropriately so your 'emails' table (unless you've used set_table_name) contains a column called 'mail'?
HTH.