Tag: devise

在Rails项目中设计未定义的方法

我有一个安装了Devise gem的Rails 5应用程序。 我的项目是以这样的方式设置的,即所有控制器都是命名空间…甚至是Devise控制器。 在我的路由文件中,我已经完成了这个(这将更好地解释我的命名空间结构): controllers: { sessions: “api/v1/public/members/users/sessions”, passwords: “api/v1/public/members/users/passwords”, registrations: “api/v1/public/members/users/registrations”, }, path_names: { sign_in: ‘login’, password: ‘forgot’, sign_up: ‘register’, sign_out: ‘signout’ } 我还设置了设计视图文件以反映所需的命名空间结构。 我在ApplicationController.rb中包含以下内容: before_action :authenticate_api_v1_public_members_user! 由于我的Devise控制器是命名空间,标准’before_action:authenticate_user!’ 方法需要更新到上面的方法才能工作。 我遇到的问题是,我的任何视图都没有提供Devise帮助方法。 调用’current_user’或’user_signed_in?’时 在视图中,刷新浏览器时出现“未定义方法”错误。 我也试过命名这些辅助方法,但无济于事。 UPDATE模型在我的应用程序中没有命名空间。 我使用的是普通用户模型。 只有控制器是命名空间的,并且结构如上面的路由所示。 有没有人有类似问题的经验?

显示特定用户的post?

这里我有一些代码: def show @post = Post.find() end end 用户模型有has_many:posts,post模型有belongs_to:user。 现在,我如何才能使show动作仅显示用户登录的post。登录的用户是“current_user”?

Devise中的NoMethodError :: SessionsController#在使用“after_sign_in_path_for(resource)”时创建

我正在尝试为我的测验webapp编写function,允许重新连接的用户继续他们中断的地方(重新连接的可能原因是:因为他们丢失了连接,或者因为他们无意中注销,或者因为他们刷新了页面)。 所以我用Google搜索并找到了解决方案,我可以在”after_sign_in_path_for(resource)”编写方法”after_sign_in_path_for(resource)” ,并且在用户登录后,我在该方法中放置的任何内容都将由Devise执行。 当我尝试渲染静态页面(甚至是许多静态页面中的一个,取决于我保存到我的数据库的“阶段”参数)时,此解决方案非常有效。 但我的应用程序有2种用户: 单击从静态页面到静态页面的链接的“教师” “学生”,无法控制,但只要教师点击(推送=通过ActionCable收到HTML并替换当前页面),就会推送新的HTML 那么现在学生登录时会发生什么: after_sign_in_path_for(resource) :确定用户是学生并进行呼叫 我的quiz_session模型中的find_current_page方法:它检查我的数据库中的phase变量,并调用我的频道服务器端的多个方法之一,例如 我的IndividualUpdateChannel resend_question_page类方法:此方法构建html并将其广播给Student。 但是:代替接收和显示发送的HTML,学生得到“Devise中的NoMethodError :: SessionsController #create – 未定义的方法`student_url’for#” 。 在日志中它看起来像1.,2。和3.运行,但然后突然应用程序尝试将学生重定向到某个地方? 并失败。 这是控制台输出: https : //pastebin.com/FKmHF4qS … [ActionCable] Broadcasting to student_#3: {:phase=>1, :answers=>[“The call returns immediately without waiting for the I/O to complete.”, {“ids”=>[9, 10, 11, 12], “current_question_index”=>1}]} Redirected to Completed 500 Internal Server Error […]

将名称添加到Spree Devise注册

我正在尝试添加姓名,姓氏和生日来设计Spree注册。 我已经安装了gem gem ‘spree_auth_devise’, github: ‘spree/spree_auth_devise’, branch: ‘3-0-stable’ 创建了迁移: class AddFieldsToSpreeUsers < ActiveRecord::Migration def change add_column :spree_users, :name, :string add_column :spree_users, :surname, :string add_column :spree_users, :birthdate, :time end end 创建了一个新表单来添加字段app / views / spree / shared / _user_form.html.erb 定义应用程序控制器中的方法以使用before操作运行 class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you […]

设备和ActiveResource

我希望为少数项目提供1个数据库,其中只有一个与db直接连接,首先我要实现用户身份validation。 我应该在没有连接到数据库的情况下使用REST。 D您可以使用设计gem与活动资源一起工作。 谢谢。

通过Form使用Rolify以及Devise和Cancan动态添加角色

我只是按照教程“ https://github.com/EppO/rolify/wiki/Tutorial ”非常好,工作正常。 但我的问题不能通过表单添加角色而不使用Rails控制台。 Role列连接到角色表(Rolify Roles) 这是我的角色.rb class Role <ActiveRecord :: Base has_and_belongs_to_many:users,:join_table =>:users_roles belongs_to:resource,:polymorphic => true User.rb class User <ActiveRecord :: Base belongs_to:account,:inverse_of =>:users validation:account,:presence => true rolify attr_accessible:role_ids #包括默认设计模块。 其他可用的是:#:确认,:可锁定,:超时和:omniauthable 设计:database_authenticatable,:registerable,:recoverable,:rememberable,:trackable,:validatable #为您的模型设置可访问(或受保护)属性 attr_accessible:email,:password,:password_confirmation,:remember_me,:role_ids #attr_accessible:title,:body has_many:auditinits 结束 任何帮助都很感激!!

在设备中的两个Web应用程序之间共享会话

我有多个申请。 我希望能够使用cookie_store在它们之间共享会话。 申请A: before_filter :authenticate_from! def authenticate_from! unless session[‘warden.user.user.key’].nil? @user=User.find_or_initialize_by_id(ky[1]) sign_in @user end end 它可以工作,但无法识别应用程序B会话。 我该怎么办?

从其json表示中获取IPAddr实例

如何从json表示中获取IPAddr实例? 语境: 我正在使用一个使用draftsmangem的Rails应用程序。 基本上,当一个人对数据库中的记录和ruby模型has_drafts进行更改时,不会立即对记录进行更改,而是将更改草稿和结果记录保存在草稿表中,直到一次publish!为止publish! 那个草案。 然后对实际记录进行更改。 很简约 :) 草稿表保存了允许更改发生在postgres表中的json列中的对象。 我也使用Devise,我的用户模型使用trackable模块,其中包括current_sign_in_ip以及列类型inet的last_sign_in_ip 。 问题: 我的用户表中的inet类型列以及User对象的其余部分存储在由draftsman gem在名为object的单个json列中创建的草稿表中。 由于以下原因,在这种情况下从对象中重新定义对象不成功: IPAddr实例具有IPAddr类无法感知的json表示。 例如,ruby中的IPAddr实例响应to_json ,这给我一些如下所示的内容: “\”family\”:2,\”addr\”:2130706433,\”mask_addr\”:4294967295}” 。 这些实例也响应to_s并给我这样的东西: “127.0.0.1” 。 不幸的是, IPAddr类似乎不知道如何从我所知道的json中恢复过来: [277, 286] in /home/jake/.rvm/gems/ruby-2.2.1/bundler/gems/draftsman-1bd3c797d540/lib/draftsman/model.rb 277: data = { 278: :item => self, 279: :whodunnit => Draftsman.whodunnit, 280: :object => object_attrs_for_draft_record 281: } => 282: data = merge_metadata_for_draft(data) 283: 284: # […]

Rails 4 Devise重新激活“软删除”帐户

按照本教程,如何进行软删除 ,这是有效的。 但是,如果用户决定要返回并重新激活帐户,那么最好的方法是什么? 或者这也有维基​​? 我找不到它。

设计模型确认后做自定义动作

我知道一旦用户确认了一个Confirmable帐户,我可以用以下方法更改重定向URL: def after_confirmation_path_for(resource) view_context.admin_dashboard_url_for(subdomain: resource.tenant.subdomain) end 但是如果我想在确认之后在resource上调用自定义方法,我将如何使用设计? 我想我可以坚持这种方法…… def after_confirmation_path_for(resource) resource.do_thing_after_confirmation view_context.admin_dashboard_url_for(subdomain: resource.tenant.subdomain) end 但是,让这种方法改变模型并不合适。