我想要的:用户登录到他的帐户,并自动更新自己的计数器(@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