本书下面的特定代码使用Rails 4 我相信rails 5需要强大的参数,可能会导致Rails 5出错。 请有人可以分享我。如何申请许可证并要求以下代码)
来自model user.rb
HANDLE*
错误(在第5栏中)
HANDLE* phMpq
这就是我的所作所为。
def remember
remember_token = User.new_token
update_attribute(:remember_digest, User.digest(remember_token))
end
错误:
NoMethodError in SessionsController#create
undefined method `update_attribute' for #<Class
Tobe clear:从sessionshelper.erb调用的那些方法
def remember
remember_token = User.new_token
update_attribute(:remember_digest, User.digest(params:[remember_token]))
end
user.rb
NoMethodError in SessionsController#create
undefined method `update_attribute' for #<Class:0x007fd23b30a790> Did you mean? _default_attributes
sessionscontroller.rb
module SessionsHelper
# Logs in the given user.
def log_in(user)
session[:user_id] = user.id
end
# Remembers a user in a persistent session.
def remember(user)
User.remember
cookies.permanent.signed[:user_id] = user.id
cookies.permanent[:remember_token] = user.remember_token
end
# Returns the user corresponding to the remember token cookie.
def current_user
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
elsif (user_id = cookies.signed[:user_id])
user = User.find_by(id: user_id)
if user && user.authenticated?(cookies[:remember_token])
log_in user
@current_user = user
end
end
end
# Returns true if the user is logged in, false otherwise.
def logged_in?
!current_user.nil?
end
# Forgets a persistent session.
def forget(user)
user.forget
cookies.delete(:user_id)
cookies.delete(:remember_token)
end
# Logs out the current user.
def log_out
forget(current_user)
session.delete(:user_id)
@current_user = nil
end
end
答案 0 :(得分:0)
我有一个类似的实现,也许这可能会帮助你
user.rb
中的
def create_confimation_token
generate_token(:confirmation_token)
update_attribute(:expiration,Time.zone.now + 2.days)
save!
end
def generate_token(column)
begin
self[column] = SecureRandom.urlsafe_base64
end
end
答案 1 :(得分:0)
问题出在帮助,行
您正在使用remember
类调用User
方法,因此它显示undefined method for class
。而是使用user object
User.remember
应该是,
<强> user.remember
强>
def remember(user)
user.remember
cookies.permanent.signed[:user_id] = user.id
cookies.permanent[:remember_token] = user.remember_token
end
答案 2 :(得分:0)
您应该在update_attribute
上致电user
尝试
current_user.update_attribute(a: b)
在SessionsController#create
答案 3 :(得分:0)
update_attributes是一个实例方法而不是类方法,所以首先需要在User类的实例上调用它。
像:
NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"myColor"];
UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];
[self.txtMobNo.layer setBorderColor:[color CGColor]];
尝试一次。
答案 4 :(得分:0)
你应该为用户对象调用update_attributes。
helper.rb
def remember(user)
user.remember
cookies.permanent.signed[:user_id] = user.id
cookies.permanent[:remember_token] = user.remember_token
end
model.rb
def remember
remember_token = new_token
self.update_attributes(:remember_digest, digest(remember_token))
end
答案 5 :(得分:0)
发生了什么
导致以下方法无效。
13
SessionsHelper中的User.remember应为
14
谢谢大家