Tag: 设计

Rails,设计。 除非AdminUser,否则禁止用户操作

我有使用 Devise创建的用户模型, 类型为:string属性和AdminUser模型( AdminUser < User )。 在应用程序控制器中,我定义了:require_admin方法: def require_admin unless current_user == AdminUser flash[:error] = “You are not an admin” redirect_to store_index_path end end 在我设置的产品控制器上 before_action :require_admin, except: :show 现在我通过控制台成功创建了一个AdminUser(使用AdminUser id),当我登录应用程序时,我仍然无法使用这些操作(创建,编辑等)。 有任何想法吗?

Rails 5&Devise:最小密码长度不起作用

我正在使用Rails 5&Devise和初始化器/ devise.rb: config.password_length = 6..128 注册/ new.html.erb: {:class => “col s12 form-text”, autocomplete: “off”}, validate: true) do |f| %> “validate”, :placeholder => “Robin Smith”, :required => true %> “validate”, :required => true, placeholder: ” ” %> “validate”, :required => true, placeholder: ” ” %> “waves-effect waves-light btn-flat”, :value => “Join Now” %> 和路线: resources […]

ActionCable:为什么要把广播放在一个单独的工作中? 对于表格,为什么不从控制器广播?

大多数教程都是一年前推出的示例应用程序DHH略有改动的版本。 他们中的大多数人都有将广播转移到工作岗位的习惯。 但是A)这不是Redis的观点吗? B)因为我正在使用Delayed :: Job不会直接播放更快吗? 在创建模型或通过ActionCable提交表单时,它似乎没有CSRF保护。 积极限制起源是否消除了对protect_from_forgery的需求? gem的自述文件有一个指向教程的链接,该教程添加了一个签名的cookie,我在warden[‘env’].user看到了另一个finds_verified_user教程。 这是否解决了protect_from_forgery解决的问题? 如果没有:我以为我可以像往常一样将表单提交给控制器,然后直接从控制器向所有订阅用户广播?但是因为它看起来很简单但我没有看到任何地方我担心有什么原因。 在那儿?

Ruby on Rails:设计

我已经为用户登录的假设应用程序设置了一个脚手架,但是当我尝试使用该视图创建用户时遇到以下错误 undefined method `encrypted_password=’ for #

设计错误显示两次

使用Devise进行授权我将其配置为通过电子邮件或登录进行授权。 已删除Validatable驱动程序。 我在我的用户模型中写了validation。 另外我在app / helpers / devise_helper.rb中覆盖了设计助手: module DeviseHelper def devise_error_messages! return “” if resource.errors.empty? errors = Array.new resource.errors.each do |field, msg| errors.push(msg) end flash[:alert] = errors end end 在视图(devise / registrations / new.html.erb)中我替换 至 所以,问题。 如果字段为空(或其他),则会显示闪存错误。 然后我转到主页,错误再次出现。 它只出现在注册界面中。 当授权没事的时候。 请帮忙。 更新。 部分视图(_block_errors.html.erb): “#{name}” %> “#{name}” %> 在布局中,它被称为: 解决了! 在重载方法devise_error_messages中! 需要替换字符串: flash[:alert] = errors […]

属性存在时重定向?

为了创建Honey pots字段,我在我的User模型中添加了一个虚拟属性,如果填入该属性,则会将用户发送回根页面: class User < ActiveRecord::Base attr_accessible :email, :password, :remember_me, :username, :fake_field attr_accessor :fake_field devise :database_authenticatable, :registerable………… before_create :setup_default_role_for_new_users ROLES = %w[admin default banned] def self.fake_field(string) end private def setup_default_role_for_new_users if self.fake_field.present? redirect_to root_url end if self.role.blank? self.role = "default" end end end 该表单适用于注册,但在填写fake_field我得到: undefined local variable or method `root_url’ for # 这个可以吗? 这不会为机器人渲染404吗? 理想情况下,我希望机器人登陆404错误页面。

设计:从用户模型中获取和设置区域设置

我在User表中为每个用户设置了区域设置。 我按照这些说明在用户登录后获取区域设置。它一直有效,直到用户重新加载浏览器,然后标准区域设置(en)再次变为活动状态。 如何在会话中保留user.locale的值? 我正在使用Rails_Admin,这意味着虽然我有一个User模型,但我没有User模型的控制器。 # ApplicationController def after_sign_in_path_for(resource_or_scope) if resource_or_scope.is_a?(User) && resource_or_scope.locale != I18n.locale I18n.locale = resource_or_scope.locale end super end

Rails 3 / devise似乎忽略了自定义控制器

使用Rails 3应用程序的设计,我已经阅读了如何自定义后注册路由的wiki / docs,我正在使用可确认模块,所以我想我需要覆盖after_inactive_sign_up_path_for 我想我已经做得很好,但它完全忽略了我的自定义控制器,并在注册后仍然路由到root_path。 使我抓狂。 我的注册是使用用户模型,我使用generate任务复制了devise的视图; 如果我将它们移动到视图/注册设计回落到默认视图(在我猜的gem中),所以它似乎不是’注意’我的控制器 我的路线中有这个: devise_for :users, :controllers => { :registrations => “registrations” } match ‘sign_up_done’ => ‘home#sign_up_done’, :as => :after_sign_up 这是我的控制器:(controllers / registrations_controller.rb) class RegistrationsController < Devise::RegistrationsController def after_inactive_sign_up_path_for(resource) after_sign_up_path end def after_sign_up_path_for(resource) after_sign_up_path end end (添加after_sign_up_path_for以防万一,使用确认) 它似乎完全忽略了我的控制器,命名错了吗? 谢谢你的任何输入!

Rails:资源和表单

前言:我不确定资源是什么。 我需要这个表单(通过user/sign_up路由工作)才能在我的“离线页面”上工作 – 因此用户仍然可以在我的应用程序关闭时进行注册。 我的application_controller调用:filter_before, :except => [:offline] ,我的registrations_controller有一个:skip_filter_before动作。 (它被称为行动吗?) resource_name, :url => registration_path(resource_name)) do |f| %> 我的Registration_controller: class RegistrationsController redirect_location(resource_name, resource) else set_flash_message :notice, :inactive_signed_up, :reason => resource.inactive_message.to_s if is_navigational_format? expire_session_data_after_sign_in! respond_with resource, :location => after_inactive_sign_up_path_for(resource) end else clean_up_passwords(resource) respond_with_navigational(resource) { render_with_scope :new } end end … end 路线: confirm_account /confirm_account(.:format) {:controller=>”confirmations”, :action=>”confirm_account”} sign_up […]

无法使用skip_before_filter在Rails中使用ActiveAdmin

我正在使用devise gem进行身份validation,并在我的ApplicationController中使用以下的before_filter: before_filter :require_login def require_login unless user_signed_in? || params[:controller] == ‘devise/sessions’ flash[:error] = “You must be logged in to access that page.” redirect_to new_user_session_path end end 我最近实现了ActiveAdmin gem并尝试让skip_before_filter为ActiveAdmin工作,以便我可以访问ActiveAdmin。 我尝试了本文中概述的方法,将以下内容添加到config / initializers / active_admin.rb: config.skip_before_filter :require_login 并将以下内容添加到我的一个管理模型文件listing.rb中: ActiveAdmin.register Listing do controller do skip_before_filter :require_login end end 但即使在重新启动服务器和浏览器之后,它似乎也无法工作。 我究竟做错了什么?