我想从我的Controller中调用Model中的generate_token方法,但是我得到一个错误:undefined method generate_token。
我的控制器
class UsersController < ActionController::Base
def login_validate
User.generate_token(:token)
....
end
end
这是我的模特
class User < ActiveRecord::Base
def generate_token(token)
begin
self[token] = "xxxxxxxxxxxxxxxxxxxx"
end while User.exists?(token => self[token])
end
end
users_controller中的整个login_validate方法
def login_validate
@user = User.find_by_email params[:email]
if @user.valid_password?(params[:password])
cookies.permanent[:token] = @user.token
render :json => @user
end
end
答案 0 :(得分:1)
关于你的代码: &#34;但这是一个错误,未定义的方法generate_token&#34; 那是因为您使用类名称(User.generate_token)调用方法,但generate_token似乎是一个实例方法。 如果要调用实例方法,则必须创建该类的对象。 但是如果你想调用,那么类级方法会确保你的方法保持自我。在开头。
如果您尝试生成随机令牌&amp;将其返回给控制器,然后尝试:
#users_controller.rb
unique_token = User.genereate_token
以下方法是类级方法(因为它使用self),所以称之为User.generate_token
# user.b
def self.generate_token
begin
generated_token = rand(1000..5000)
end while User.exists?(:token => generated_token)
generated_token
end