我想要的:用戶登錄到他的帳戶,並自動更新自己的計數器(@counter + = 1)。創建一個計數方法用戶登錄與Ruby on Rails
我是Ruby和Rails的新手,我使用的是Rails 3.2.12。我讀了「雄辯的紅寶石」一書,在這個問題上搜索了stackoverflow,並從pragmaticstudio.com上觀看了一段視頻 - 紅寶石課程。在視頻過程中,他們創造了這樣一個類:
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation, :counter
has_secure_password
before_save { |user| user.email = email.downcase }
before_save :create_remember_token
def initialize(counter=0)
@counter = counter
end
def w00t
@counter += 15
end
private
def create_remember_token
self.remember_token = SecureRandom.urlsafe_base64
end
end
現在,在我的應用程序在用戶登錄結算與SessionsController和來到這裏,我的問題,因爲從用戶模型中的每個方法是「未知」,以SessionsController。
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by_email(params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
sign_in user
redirect_back_or templates_path
else
flash.now[:error] = 'something went wrong.'
render 'new'
end
end
def destroy
sign_out
redirect_to root_url
end
end
以下是我已經嘗試過,但對於我的解決方案沒有奏效:我在SessionsController添加
user.w00t
,1線以上
sign_in user
返回的錯誤是: 「SessionsController的undefined methode'w00t'」。
我也試着寫在會議助手的方法:
def woot(template)
template.counter += 1
end
然後我重新命令我SessionsController「create」方法,像這樣:
def create
template = Template.find_by_bosskey(params[:bession][:bosskey])
if template
woot template #that is my new line !
tsign_in template
redirect_back_or template
else
flash.now[:error] = 'something went wrong.'
render 'new'
end
end
有了這個,我沒有得到任何錯誤,但仍然計數器不會改變。那時我更困惑。請告訴我在哪裏放置該方法或如何解決我的應用程序丟失的問題。
你應該教課!非常感謝你的回答。 – rubybrah 2013-02-24 05:42:36