pludoni / simple-captcha

Rails 3+4 support now! Simple Captcha is the simplest and a robust captcha plugin. Its implementation requires adding up a single line in views and in controllers/models.
MIT License
106 stars 73 forks source link

Can't mass-assign protected attributes: captcha, captcha_key #49

Open ghost opened 8 years ago

ghost commented 8 years ago

ruby 1.9.3, rails 3.2.19

Error

Can't mass-assign protected attributes: captcha, captcha_key

To fix this have added attr_accessible into User model.

attr_accessible :captcha, :captcha_key

And now its allowing me to register with wrong captcha as well

sagarjunnarkar commented 8 years ago

Hello @rohit-clarion I also faced same issue when I tried model based flow. Added captcha, captcha_key in attr_accessible and added custom validation. Now valid_with_captcha calls valid method and that produces error SystemStackError: stack level too deep so I used is_captcha_valid?

validate :check_captcha, on: :create
  def check_captcha
      unless is_captcha_valid?
           #Remove wrong message : Captcha translation missing: en.simple_captcha.message.user
           errors[:captcha].try(:pop)
           errors.add :captcha, "does not matched"
       end
  end

Here is user model.

ghost commented 8 years ago

@sagarjunnarkar thank you

sapna-prajapati commented 8 years ago

I had face the same issue and traversing through infinite loop while applied custom validation. Thanks for correction @sagarjunnarkar. Good Job.