ruby-on-rails - 如果 Devise 的 current_user 为零,则创建后备

标签 ruby-on-rails authentication devise permissions

我的应用程序中有一些实例根据 Devise 提供的 current_user 执行操作。例如:

Controller

class PostsController < ApplicationController
  def like
    @post.liked_by current_user
  end
end

查看

...
<% if current_user.liked? post %>
  <%= link_to "Unlike", unlike_post_path(current_user.to_param, post), method: :put, remote: true %>
<% else %>
  <%= link_to "Like", like_post_path(current_user.to_param, post), method: :put, remote: true %>
<% end %>   

我的问题是,跨站点如果没有 current_user 那么我会收到 NilClass 错误。我知道回调 before_filter :authenticate_user! 但想知道什么是最佳解决方案,其中操作在登录/未登录用户的 View 中仍然可见。

最佳答案

Devise 有一个帮助程序:

<% if user_signed_in? && current_user.liked?(post) %>
  ...
<% else %>
  ...
<% end %>   

如果他们未登录,则永远不会评估条件的第二部分,因此不会出现 Nil 错误。

关于ruby-on-rails - 如果 Devise 的 current_user 为零,则创建后备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31432407/

相关文章:

authentication - 无法从 React Native 中的 AsyncStorage 返回 token

C# REST webservice认证问题

ruby-on-rails - 插件中的 Rails ActiveRecord::Observer

ruby-on-rails - 使用 ActiveResource 模型时嵌套表单失败,Rails 4

ruby-on-rails - 使用 RSpec 测试 Controller 中的实例变量

javascript - HTML 单页应用,用浏览器填写用户名和密码

ruby-on-rails - 如何使用 rspec 测试 mandrill api

ruby-on-rails - Ruby on Rails 4 : authorisation after authentication with multiple Devise models

ruby-on-rails - devise_invitable : Only allow admin to invite users

javascript - 星级评定 Rails 4 jquery ajax javascriptraty