Tag: 设计

为需要身份validation的操作设计操作筛选器

我正在使用设计进行身份validation,但是我无法看到和操作filter来指定需要用户登录的操作,这是否包含在设计gem中? 如果不是我怎么能创建一个,我有一个想法,但因为我是铁杆新手,我宁愿首先看一个更有经验的程序员的解决方案。

设计从1.1.5升级到1.4.5会导致错误的参数数量错误

我刚从Devise 1.1.5升级到1.4.5用于Rails 3.1(1.1.5似乎导致了bcrypt gem版本问题)。 现在user_signed_in? 抛出“错误的参数数量(1对2)” Stack trace is: devise (1.4.5) lib/devise/models/authenticatable.rb:89:in `serialize_from_session’ devise (1.4.5) lib/devise/rails/warden_compat.rb:27:in `deserialize’ warden (1.0.5) lib/warden/session_serializer.rb:31:in `fetch’ warden (1.0.5) lib/warden/proxy.rb:182:in `user’ warden (1.0.5) lib/warden/proxy.rb:278:in `_perform_authentication’ warden (1.0.5) lib/warden/proxy.rb:90:in `authenticate’ devise (1.4.5) lib/devise/controllers/helpers.rb:48:in `current_user’ devise (1.4.5) lib/devise/controllers/helpers.rb:44:in `user_signed_in?’ app/controllers/main_controller.rb:24:in `index’ actionpack (3.1.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action’ actionpack (3.1.0) lib/abstract_controller/base.rb:167:in `process_action’ ….. 有没有经历过这个?

在Devise中自定义confirmation_url

如何在邮件程序视图中自定义Devise生成的默认行? @resource.confirmation_token) %> 我在我的控制器中编写了一个名为user_confirm 。 我也为它定义了一条路线。 我可以使用令牌作为参数来获取链接到该方法的URL吗?

在Rails Devise gem中如何修改send_reset_password_instructions方法?

我想修改send_reset_password_instructions方法,以便我可以通过它将一些额外的参数发送到url。 然后我可以在url中读取该参数,如果它存在,我将以不同的方式设置视图(和邮件程序)的样式。 我真正需要做的是发送重置密码而不是确认电子邮件。 我已经让我的应用程序发送重置密码而不是确认,但现在我需要编辑邮件程序和视图是不同的。 我怎样才能做到这一点?

warden回调应该放在rails应用程序中的哪个位置?

我对铁路比较陌生。 我有Devise设置,并希望在用户登录后运行一些回调代码。 查看Warden wiki页面 ,我可以使用“after_set_user”回调来执行此逻辑,例如: Warden::Manager.after_set_user do |user, auth, opts| unless user.active? auth.logout throw(:warden, :message => “User not active”) end end 但是,我不确定我应该在哪里存储这些东西。 我的第一个想法是我可以把它放在config / initializers / devise.rb中。 那是对的吗? 在config目录中放置本质上是控制器代码的感觉并不正确。

任何人都有devise_invitable的经验吗?

如何在控制器中添加使用devise_invitable的function。 我想添加其他字段,如message,proeject_id以及邀请,但不知道从哪里开始? 这是devise_invitable: 链接文本

使用Devise在RoR中的会话超时消息

我有一个使用设计保护的应用程序和30分钟的会话超时。 使用设计一切都适用于正常导航,如果用户在超时时点击链接,他们会被重定向回登录屏幕,并显示“您的会话已过期,请再次登录以继续。”,非常好。 但是我在很多地方都有ajax。 如果会话超时并且用户执行了ajax操作,我想要与上面相同的行为,而不是在后台静默失败并出现401错误。 到目前为止,我在每个页面上都有这个jquery代码来捕获401并重新加载: $(document).ajaxError(function(e, error) { switch(error.status) { case 401: { // unauthorised (possible timeout) location.reload(); break; } 它运作良好,但有一个恼人的问题: 因为ajax请求首先命中设备,当我的应用程序重新加载页面时,我会被定向到登录页面,但是我没有看到超时消息,我看到未经身份validation的“您需要在继续之前登录或注册”。 信息。 有没有办法确保在第二个请求设计仍然显示超时消息?

在Rails 3.2 App中使用多个模型时,如何使用Devise处理身份validation

我正在使用Rails 3.2应用程序,我使用Devise进行身份validation。 我决定尝试单表inheritance来管理用户角色,但我很快就遇到了问题。 我目前有三个用户模型, User < ActiveRecord , Admin < User和Collaborator < User 。 管理员和协作者共享大多数用户列,但他们的行为和权限略有不同。 我的模特目前看起来像这样: class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :token_authenticatable # Setup accessible (or protected) attributes for your model attr_accessible :email, :name, :password, :password_confirmation, :remember_me before_save :ensure_authentication_token […] end class Admin < User has_one :account, dependent: :destroy […]

Rails设计为未确认的用户抛出302错误

我已经整合了ROR站点中教练登录的设计。 它工作正常,但当我尝试通过尚未确认的用户登录时,它会抛出302错误。 以下是我使用的代码的详细信息: 1) Database Schema: create_table “coaches”, :force => true do |t| t.string “first_name”, :limit => 20 t.string “last_name”, :limit => 20 t.integer “status”, :limit => 2, :default => 0 t.datetime “created_at” t.datetime “updated_at” t.string “email”, :default => “”, :null => false t.string “encrypted_password”, :default => “”, :null => false t.string “reset_password_token” t.datetime “reset_password_sent_at” […]

如何在Rails中的注册表单中创建Devise用户时创建另一个对象?

我的系统中有不同类型的用户。 一种是,比方说,设计师: class Designer < ActiveRecord::Base attr_accessible :user_id, :portfolio_id, :some_designer_specific_field belongs_to :user belongs_to :portfolio end 这是在用户注册时立即创建的。 因此,当用户填写sign_up表单时,将创建一个Devise User以及此Designer对象,并将其user_id设置为创建的新User 。 如果我可以访问控制器的代码,这很容易。 但是对于Devise,我无法访问此注册控制器。 注册后创建User和Designer的正确方法是什么?