Tag: 设计

从表单中选择枚举以设置角色

Ruby on Rails 4.1 我正在使用具有枚举角色的Devise。 它在创建用户时当前设置了defualt角色。 我想在创建用户设置枚举角色的表单中添加一个字段。 我读过这篇文章,但没有说明如何利用新角色。 这是User类 devise :database_authenticatable, :registerable, :confirmable, :recoverable, :rememberable, :trackable, :validatable enum role: [:user, :vip, :admin, :developer, :marketing, :support, :translator] after_initialize :set_default_role, :if => :new_record? def set_default_role self.role ||= :user end 这是我尝试选择一个枚举角色的表单的一部分: 错误: NoMethodError – undefined method `enum’ for [“user”, 0]:Array: actionview (4.1.1) lib/action_view/helpers/form_options_helper.rb:761:in `value_for_collection’ 我之前从未使用过enum, 文档也没有certificate有用。 如何显示枚举选项?

如何在Rails 3 + Devise中创建访客用户

目前我有一个带有设计的rails 3 app。 它要求用户注册/登录访问。 我想启用访客用户。 因此,当用户访问某些视图时,为该用户创建访客用户帐户,然后如果/当他们认证/注册该访客用户然后升级到普通用户时。 将应用程序视为聊天室。 我希望访客用户能够加入聊天室,然后oauth进入twitter进行注册。 但我不想在加入之前强制用户注册。 建议? 我发现了这个: https : //github.com/plataformatec/devise/wiki/How-To : -Create-a-guest-user 问题是我添加了帮助程序,但不了解如何启动current_or_guest_user。 还不确定如何启动每个特定的允许视图? 有任何想法吗? 指针? 谢谢

延迟和/或重新发送Devise的手动创建用户的确认电子邮件

我正在使用Devise来允许用户注册,以及使用我自己的用户admin来手动创建用户。 当我在管理员中创建用户时,Devise会立即向新用户发送确认。 我相信这是因为设计和我的管理员都使用相同的模型。 在管理员准备发送此电子邮件之前,如何延迟此电子邮件? 此外,Devise的validation要求管理员为新用户设置密码。 我更希望手动创建的用户在回复确认时指定自己的密码。 现在手动创建的用户将不知道他们的密码,除非我在补充电子邮件中发送它们。

Rails&Devise:覆盖SessionsController

我正在尝试在我的主页上设置登录表单。 我设法通过遵循Wiki来做到这一点 但是,如果登录信息不正确, /devise/session/new.html.erb呈现/devise/session/new.html.erb 。 我不希望这样。 我希望我的用户被重定向到root_url ,并显示flash消息中的错误。 我能够覆盖registrations_controller.rb的另一个function,但覆盖sessions_controller.rb给我带来了很多麻烦。 我想改变做我想做的事情是什么? 如果登录正确,我仍然希望将用户重定向到after_sign_in_path 。 原始控制器在这里 到目前为止,我知道我必须在我的routes.rb这样做 devise_for :users, :controllers => { :registrations => “registrations”, :sessions => “sessions” } 我还设置了controller/sessions_controller.rb class SessionsController < Devise::SessionsController # GET /resource/sign_in def new resource = build_resource clean_up_passwords(resource) respond_with_navigational(resource, stub_options(resource)){ render_with_scope :new } end end 我觉得我必须改变render_with_scope :new但是……怎么样? 在那个版本中,我得到undefined method ‘users_url’ for #的错误undefined method […]

路由错误未初始化的常量用户

我是一个铁杆新手…我正在尝试设置登录Facebook的演示应用程序。 我正在使用OmniAuth并遵循本教程 https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview 重定向到fB时出现此错误: Routing Error: uninitialized constant Users Try running rake routes for more information on available routes. 环境 Windows 7 Rails version :3.2.9.rc2 omniauth-1.1.1 devise-2.1.2 我的routes.rb看起来像这样: root :to => ‘static_pages#home’ resources :users get “static_pages/home” match ‘/auth/facebook’ => ‘omniauth#passthru’ match ‘/users/auth/facebook’ => ‘users/omniauth_callbacks#passthru’ devise_for :users, :controllers => { :omniauth_callbacks => “users/omniauth_callbacks” } , :strategy_class […]

Rails 3 – 设计:如何在编辑注册时跳过’current_password’?

我用我的设计模型实现了omniauth,所以我可以使用其他服务进行身份validation。 我的模型不再需要密码,因为用户可以使用twitter,facebook进行身份validation… 一切正常,但是,当用户尝试编辑其注册时,设计会跳过该过程,因为用户没有通知’current_password’(现在在某些情况下不存在)。 我创建了一个注册控制器来覆盖一个设备: class RegistrationsController < Devise::RegistrationsController def update super end end 但是我没有找到任何关于如何跳过密码validation的文档,我怎样才能在更新操作中执行此操作?

使用Devise进行API身份validation(Ruby on Rails)

我正在尝试使用设计配置:token_authenticatable在我的项目中通过json添加身份validation。 我有从本文中获取的工作sessions_controller #create代码 – http://blog.codebykat.com/2012/07/23/remote-api-authentication-with-rails-3-using-activeresource-and-devise / def create build_resource resource = User.find_for_database_authentication(:email => params[:email]) return invalid_login_attempt unless resource if resource.valid_password?(params[:password]) resource.ensure_authentication_token! #make sure the user has a token generated render :json => { :authentication_token => resource.authentication_token, :user_id => resource.id }, :status => :created return end end def invalid_login_attempt warden.custom_failure! render :json => { :errors => […]

Rails 3 w / Devise:如何根据用户是否经过身份validation设置两个单独的主页?

我正在使用Rails 3和Devise创建一个应用程序,用户可以访问该网站并显示包含登录和注册表单的主页。 这个页面有自己的控制器(“主页”)所以它的路线是 root :to => “homepage#index” 如果用户已经登录,我想显示不同的主页。这将考虑到根点 root :to => “dashboard#index” 有没有办法在routes.rb中有一个条件路由,这可以让我在将用户路由到其中一个主页之前检查用户是否经过身份validation? 我尝试使用以下代码,但如果我没有登录,设计要求我登录,所以显然只有第一条路线有效。 authenticate :user do root :to => “dashboard#index” end root :to => “homepage#index” 此外,我希望在两种情况下都将url指向www.example.com,以便www.example.com/dashboard/index和www.example.com/homepage/index永远不会出现在浏览器中。 太感谢了 !!!

设计Twitter,Cookie溢出错误?

我正在尝试使用本指南将twitter集成到设计中。 我基本上把所有出现的facebook都用twitter取而代之。 但是,当我使用Twitter登录时,我收到以下错误: ActionDispatch::Cookies::CookieOverflow (ActionDispatch::Cookies::CookieOverflow): 在以下url: http://localhost:3000/users/auth/twitter/callback?oauth_token=something&oauth_verifier=blah 有什么好方法可以解决这个问题吗? 谢谢!

如何在设计中使用http身份validation,并使用可选的omniauth令牌作为身份validation令牌

我们有一个rails应用程序设置,它使用devise&omniauth允许通过facebook身份validation登录。 我们还有一个移动应用程序,当前正在使用http身份validation通过传递用户名和密码或传入http身份validation令牌来登录rails应用程序。 到目前为止,这一切都很有效。 移动应用程序还具有与Facebook本身进行身份validation的能力,并直接在自己和Facebook之间接收用户facebook令牌。 我想弥合这个差距,以便如果用户通过Facebook从移动应用程序登录并拥有他们的Facebook令牌,允许将facebook令牌用作rails应用程序上的身份validation,就好像他们已经从facebook通过浏览器。 最终结果是移动应用程序可以通过以下方式登录用户: 1)用户名/密码或2)http认证令牌或3)omniauth(facebook)令牌 此外,在3)的情况下,如果用户尚未存在于rails应用程序上,则需要创建用户 – 现在已经使用浏览器端身份validation执行此操作,因此可能无需执行任何操作。 如何在设计构造中最好地实现这一目标?