我有一个Rails应用程序运行"真正"用户和"客人"用户通过设计(https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user)。
大多数时候,他们可以无法区分地使用,但偶尔我希望能够告诉他们真实的"从" guest"登录用户尚未登录或创建帐户的用户。
有没有标准的方法来做到这一点? (一定有,对吗?)
以下是我在=> #<User:0x007fb011620c78
id: 30,
email: "guest_143829190430@example.com",
encrypted_password:
"$2a$10$MJr8M3JA6/wYCoOz0oBTseoA3zVnLUceY7BeJLRnLgeXfKNMW/k/S",
reset_password_token: nil,
reset_password_sent_at: nil,
remember_created_at: nil,
sign_in_count: 1,
current_sign_in_at: Thu, 30 Jul 2015 16:31:44 CDT -05:00,
last_sign_in_at: Thu, 30 Jul 2015 16:31:44 CDT -05:00,
current_sign_in_ip: "127.0.0.1",
last_sign_in_ip: "127.0.0.1",
created_at: Thu, 30 Jul 2015 16:31:44 CDT -05:00,
updated_at: Thu, 30 Jul 2015 16:31:44 CDT -05:00,
first_name: "guest",
last_name: "guest",
中看到的一个示例:
first_name
我可以查看last_name
/ email
/ session[:guest_user_id]
,但这感觉很脆弱,我可以在会话中寻找.is_guest?
,这似乎也许是要走的路,但感觉应该有一个内置的def is_guest?
current_user.id == session[:guest_user_id] if current_user && session[:guest_user_id]
end
或其他东西,我宁愿使用它而不是写我自己的。
(我的谷歌和他们的代码库的探索还没有发现任何东西......一旦我可以撤回他们的回购和grep,可能会有更多......)
全部谢谢!
迄今为止,我所做的最好是:
/*
* Factory bean that creates the com.mongodb.Mongo instance
*/
public @Bean MongoClientFactoryBean mongo() {
MongoClientFactoryBean mongo = new MongoClientFactoryBean();
mongo.setHost(host);
return mongo;
}
答案 0 :(得分:2)
在不深入研究所有可用代码的情况下,我建议current_or_guest_user
方法的开头描述所需的检查。我将按照以下方式创建一个方法:
def is_guest_user?
# Someone is logged in AND (we have a guest id AND that id matches the current user)
current_user && (session[:guest_user_id] && session[:guest_user_id] == current_user.id)
end
我会将此添加到User
模型中。基于current_or_guest_user
方法,我不希望您发现其他任何内置内容(当然,他们会在该方法中使用它)。