Tag: 设计

绕过标记为公共的特定记录的设计授权的最佳方法是什么

我正在使用Rails 3.2项目中的设计和cancan。 我有一个带有布尔标志public的事件模型。 如果事件被标记为public => true,那么我希望任何人登录或不能访问该记录 GET /events/:id 如果它被标记为public => false,那么一系列康康技能将决定授权和访问上述资源。 实现这一目标的最佳模式是什么?

如何在所有控制器和操作之外运行before_action?

我有一个rails 4.2.x app,设计用于身份validation – 我有几个控制器。 我想要设计authenticate_user! 除了在主控制器索引操作之外的所有控制器和操作上运行的方法。 (当然,authenticate_user!本身需要注意设计登录等操作) 我可以确保每个控制器操作都在application_controller.rb中运行before_action: class ApplicationController < ActionController::Base before_action :authenticate_user! … end 我还可以限制所有控制器上的一组特定操作: class ApplicationController < ActionController::Base before_action :authenticate_user!, except: [:index] … end 但我不知道如何让home / index成为例外。 当然,我可以手动添加before_action :authenticate_user! 到每个控制器,并为主控制器添加一个exception以进行索引操作。 但这不是很干,如果我添加新的控制器,我需要记住将这个before_action添加到每个控制器。

如何将Devise的’超时’模块添加到现有的Devise安装中? – Rails 3.1

这些是将模块添加到现有Devise安装的说明: https : //github.com/plataformatec/devise/wiki/How-To :-change-an-already-existing-table-to-add-devise-required -列 但我似乎无法找到可timeoutable的必要列。 我查找了Devise库中可timeoutable的字段: https : //github.com/plataformatec/devise/blob/master/lib/devise/schema.rb – 但该模式文件中没有这样的方法。 该模型只有一个自定义方法,没有引用列: http : //rdoc.info/github/plataformatec/devise/master/Devise/Models/Timeoutable 如何添加该function? 谢谢。

设计注册控制器获取零资源的自定义操作

基本上我想要有两个单独的操作来更改密码和更改电子邮件,而不只是一个。 我已经更新了我的路由以指向我的新控制器,它inheritance自Devise :: RegistrationsController。 我的routes.rb: devise_for :users, :controllers => { :registrations => “registrations” } devise_scope :user do get “/users/password” => “registrations#change_password”, :as => :change_password end 我的registrations_controller.rb class RegistrationsController < Devise::RegistrationsController def change_password end end 我的app / views / devise / registrations / change_password.html.erb 这给了我零。 我在这里想念的是什么? 谢谢!

如何使用类自定义设计错误消息

即时通讯使用twitters bootstrap警报消息。 在我的application.html.erb我有…… <div class="alert alert-“> × 通常当我想做一个flash消息时,我会写一些类似的东西 flash[:success] = “Profile updated” 但我不知道如何给设计错误消息一个键和值对。 我查看了devise.en.yml,但似乎无法将消息与密钥相关联,即:成功,:错误等可能有人帮忙吗? 谢谢!

Ruby on Rails / Devise – 在重置密码时绕过模型中的自定义validation选项

在我的项目中,我修改了Devise中的注册表单,通过访问者添加:agree选项(用户必须接受注册的服务条款等)。 如果他们不同意,则不会进行validation。 当用户试图编辑他们的帐户信息时,这导致了一个问题,因为它找到了:同意validation,但我能够添加一个’unless’子句并添加另一个名为:signed_in的访问器,它在控制器中定义(我无法’弄清楚如何让模型确定用户是否已登录,设计的助手对我来说不起作用)。 我的User模型和users_controller的相关部分看起来像…… user.rb validates :agree, :term_agreement => TRUE, :unless => :signed_in users_controller.rb def update @user = User.find(params[:id]) if user_signed_in? @user.signed_in = params[:user] end […] end 所以,一切正常……当用户已经登录时,“同意”validation会覆盖。但是,我必须找出覆盖其他方案的最佳方法…当用户重置密码并需要更改时它。 我正在测试用户帐户,并试图在一个帐户上重置我的密码,但是我遇到了:同意validation…现在我必须找到一种方法来覆盖它。 我注意到更改密码表单的隐藏字段值为:reset_password_token,但我尝试过:除非=>:reset_password_token但它不起作用。 那么实现这个目标的最佳方法是什么? 除此之外,我怎么能有一个/或条件(除非:signed_in或:reset_password等):except子句?

Devise + CanCan只是阻止其他用户编辑对象

你如何阻止其他用户编辑一个对象,比如一个不属于他们自己的个人资料对象呢? 大多数在线示例都是具有多个用户角色的复合体,我无法使其工作,但必须简单: def initialize(user) can :update, Profile do |profile| profile.try(:user) == current_user end end 在我的ProfilesController#edit中 authorize! :update, @profile

是否有Rails Gem Devise的解决方案允许用户拥有多封电子邮件?

我正在寻找一种解决方案,允许我的应用上的用户拥有超过1封电子邮件。 这应该类似于Facebook,LinkedIn和Quora。 帐户可以有多封电子邮件,1为主要邮件。 是否有设计的交钥匙解决方案? 我希望不必从头开始写这个,因为它很常见。 想法? 谢谢

设计可邀:未初始化的常量

我正在使用设计,工作正常,现在我尝试使用devise_invitable。 我正确安装了它,但是当我尝试访问时出现错误 HTTP://本地主机:3000 /用户/邀请/新 错误是: Started GET “/users/invitation/new” for 127.0.0.1 at 2011-07-06 20:47:07 -0300 ActionController::RoutingError (uninitialized constant Users): Rendered /Users/Fernando/.rvm/gems/ruby-1.9.2-head/gems/actionpack-3.0.7/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.9ms) The routes looks like ok, and I dont know why it return this error. 路线: accept_user_invitation GET /users/invitation/accept(.:format) {:action=>”edit”, :controller=>”devise/invitations”} user_invitation POST /users/invitation(.:format) {:action=>”create”, :controller=>”devise/invitations”} new_user_invitation GET /users/invitation/new(.:format) {:action=>”new”, :controller=>”devise/invitations”}

使用Devise创建其他相关模型

我已经开始使用Devise实现一个新项目,这对于处理用户来说非常棒。 但是,当用户注册时,他们不仅要创建User模型,还需要创建代表公司的相关Account模型。 其他用户也将belongs_to此Account模型。 我似乎无法在Devise中找到这个钩子,虽然它看起来像一个非常常见的模式。 这是最好的做法是什么? 我还应该提一下,在sign_up表单上需要提供一些Account字段,所以在User模型中就是这样的: after_create :make_sure_account_exists def make_sure_account_exists if self.account.nil? @account = self.create_account({ :company_name => ‘???’ }) end ..因为我不知道如何获得公司名称。