0

問題文

私のコントローラでは、not_registeredを使用して Updateでブール属性を変更しようとしてresource.update_attribute(resource.not_registered, 1)いますが、 を取得していNoMethodError: undefined method 0= for #<User:0x007fe470de2950ます。なぜこれが起こっているのですか?これは、このプロジェクトを完了する前に解決する必要がある最後のバグであり、RoR での最初の作業になります!

私の進歩

  • save代わりに使用することを検討しましたが、検証をスキップする必要があるため使用できません。また、1 つの属性しか更新していないため、効率が悪いようです
  • シェルでは、resource(Devise によって作成された) は現在のユーザーのインスタンスのように見えます
  • 正しいUpdate controllerresource.not_registered => 0を実行する前に...だから私はそれresource.not_registeredが正しい構文であることを知っています。
  • を実行すると ...resource.update_attributeが得られるので、それがメソッドとして存在する!! #<ArgumentError: wrong number of arguments (0 for 2)>ことがわかりますupdate_attributeresource
  • 最後に、 update_attribute hereのドキュメントを見つけました。

コード

/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

まず、サービスが動作していることを確認してくださいsudo service nginx status

実行されていない場合は、手動で開始してみてくださいsudo service nginx start

起動に失敗した場合は、エラー ログイン/var/log/nginx/error.logまたはサーバー構成で定義されているその他のエラー ログを確認できます。

4

1 に答える 1

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を参照することをお勧めします

于 2013-06-22T20:13:11.487 に答える