我已经阅读了http://railstutorial.org/chapters上的 Rails 4 教程并完成了大部分的练习。该项目的一些建议扩展名列在我的列表顶部,用于下一步创建我的应用程序。这些是注册时的电子邮件确认功能和记住密码功能。我注意到有几个 gem 可以帮助我解决这个问题,但是当我观看了几个 Railscast 并阅读了一些教程时,它们并没有真正适用于我的情况,或者涉及一个复杂的 gem 来处理这一切(设计)。此外,在 Devise 的教程中总是假设我是从头开始的,但事实并非如此。任何人都可以帮助我或指出正确的方向来完成这两个功能,而我拥有的经验有限,被认为是安全且易于实施的吗?
此外,值得一提的是,我最终选择了 state_machine 作为一个有用的 gem,用于这个功能以及未来的功能。如果有人对这种或另一种方式有想法,我很想听听。现在,我的用户模型中存在两种状态:非活动和活动。
如果我能澄清任何事情,请告诉我。谢谢!
编辑:
我选择在我发送给注册我网站的用户的电子邮件中实施注册注册链接。我创建了一个 UserMailer 类,该类在注册时成功向用户发送电子邮件。我正在考虑将更新放在用户表的 email_token 属性的位置:
-
选项1:
/app/controllers/users_controller.rb
...
def create
redirect_to_root_if_signed_in
@user = User.new(user_params)
if @user.save
sign_in @user
+ @user.update_attribute(email_token: User.encrypt(User.new_token))
UserMailer.signup_confirmation(@user).deliver
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
end
...
-
选项 2:
/app/models/user.rb
before_create :create_email_token
...
private
def create_email_token
self.email_token = User.encrypt(User.new_token)
end
还:
- 我将如何命名负责响应用户单击电子邮件中的 url 的控制器?如何格式化 url,以便控制器响应切换我的激活状态?状态是一个带有名称
:active
并:inactive
使用state_machine
gem 的整数值。 - 指定路由的 RESTful 方式是什么?如何在 user_mailer.rb 中生成 url?它应该是 get 还是 put 在我的 routes.rb 中?