在我的控制器中,我尝试使用not_registered
在更新中更改布尔属性resource.update_attribute(resource.not_registered, 1)
,但我得到NoMethodError: undefined method 0= for #<User:0x007fe470de2950
。知道为什么会这样吗?感谢您的任何想法,这是我在完成这个项目之前需要解决的最后一个错误,这将是我在RoR中的第一个错误!
save
,但不能,因为我需要跳过验证。由于我只更新了一个属性resource
(由Devise创建)似乎是当前用户的实例resource.not_registered
=> 0
之前,这是正确的...所以我知道resource.not_registered
是正确的语法。 resource.update_attribute
,我会!! #<ArgumentError: wrong number of arguments (0 for 2)>
...所以我知道update_attribute
作为resource
/app/controllers/registrations_controller.rb:
class RegistrationsController < Devise::RegistrationsController
def update
if resource.update_with_password(params[resource_name])
resource.update_attribute(resource.not_registered, "1") # this is where I get my error message
set_flash_message :notice, :updated
sign_in resource_name, resource, :bypass => true
redirect_to after_update_path_for(resource)
else
clean_up_passwords(resource)
render "edit"
end
end
# Code removed for brevity
end
/app/models/user.rb:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :token_authenticatable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
attr_accessible :email, :password, :password_confirmation,
:remember_me, :not_registered, :pay_method, :pay_desc, :email_instructions, :current_password
def update_with_password(params={})
# code removed for brevity
end
end
答案 0 :(得分:2)
更改以下行
resource.update_attribute(resource.not_registered, "1") # this is where I get my error message
到
resource.update_attribute(:not_registered, "1") # this is where I get my error message
并阅读一些可靠的Rails文档。我建议通过http://guides.rubyonrails.org/index.html