Tag: 设计

RoR成就系统 – 多态协会和设计问题

我试图在Ruby on Rails中设计一个成就系统,并且遇到了我的设计/代码。 试图使用多态关联: class Achievement true end class WeightAchievement :achievable end 迁移: class CreateAchievements true t.timestamps end create_table :weight_achievements do |t| t.integer :weight_required t.references :exercises, :null => false t.timestamps end … #code end 然后,当我尝试下面的抛弃unit testing时,它会失败,因为它表示该成就为空。 test “parent achievement exists” do weightAchievement = WeightAchievement.find(1) achievement = weightAchievement.achievement assert_not_nil achievement assert_equal 500, weightAchievement.weight_required assert_equal achievement.name, “Brick […]

设计:用户所属组织

我正在使用设计进行身份validation,在“注册”页面上,我有一个“组织”文本字段,因此当用户注册时,他们将创建一个组织,我希望用户与该组织相关联(用户模型具有organization_id属性)。 我创建了设计视图,并为组织名称添加了fields_for。 在我的模型中,我有User belongs_to:organization and Organization has_many:users(将有多个用户与组织关联)。 在没有修改控制器的情况下,我已经找不到尝试这样做的每一条路,但没有运气。 如果没有修改控制器,请不要建议这样做,除非您有一个示例应用程序,您已经实现了它,您可以指向它。 我已经创建了一个注册控制器,如下所示: 覆盖设计注册控制器 我只是在控制器中抛出了一些put语句,我没有看到它们在控制台上显示,所以看起来我没有进入这个控制器。 我还将我的观点从app / view / devise / registrations复制到app / views / registrations,之后我的观点似乎来自外太空! 我创建的组织字段不再显示,我似乎无法分辨加载视图的位置。 很抱歉没有更简洁,但我不知道该去哪里。

将设计身份validation纳入现有的用户结构?

我有一个function齐全的身份validation系统,其用户表有超过50列。 它很简单,但它使用salt进行散列加密,使用电子邮件而不是用户名,并且还有两种不同类型的用户和管理员。 我希望将Devise身份validation合并到我的应用程序中,以增强电子邮件validation,忘记密码,记住我的令牌等额外部分…我只是想看看是否有人在收集时遇到任何建议或问题设计一个已经存在的用户结构。 我的用户模型中的基本字段是: t.string :first_name, :null => false t.string :last_name, :null => false t.string :email, :null => false t.string :hashed_password t.string :salt t.boolean :is_userA, :default => false t.boolean :is_userB, :default => false t.boolean :is_admin, :default => false t.boolean :active, :default => true t.timestamps 为了便于参考,这里是迁移的Devise字段: t.database_authenticatable :null => false t.confirmable t.recoverable t.rememberable t.trackable add_index “users”, […]

添加新动作来设计registrations_controller

我的主要设计路线是: devise_for :accounts, :controllers => { :registrations => “users/accounts/registrations”, :sessions => “accounts/devise/sessions” }, :class_name => ‘Admin’ 然后我想要一个新的url / action,所以我在上面的devise_for行之前添加以下内容: match ‘/accounts/signedup/’ => ‘users/accounts/registrations#signedup’: 然后在控制器中我有signedup动作,但当我去myurl.com/accounts/signedup,目前只有: def signedup Rails.logger.debug { “&& signed_up” } end 然后我去myurl.com/accounts/signedup我得到: AbstractController::ActionNotFound (AbstractController::ActionNotFound): 但是,如果我从控制器中删除def signedup,我会得到: The action ‘signedup’ could not be found for Users::Accounts::RegistrationsController” 知道什么是错的吗?

使用Rails和Devise进行令牌认证

我正在按照这篇优秀的文章来设置我的rails(3.2)API的身份validation部分: http://blog.joshsoftware.com/2011/12/23/designing-rails-api-using-rabl-and-devise/ 我做了以下步骤: – 增加了对Gemfile的设计 -Enabled设计用户模型并运行所需的迁移 – 我的用户模型是 class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable devise :token_authenticatable attr_accessible :email, :authentication_token, :password, :password_confirmation, :remember_me end 以及数据库中的token_authenticable(通过迁移)。 -Subclassed RegistrationController: class RegistrationsController resource_name, :recall => ” {controller_path}#new”) sign_in(resource_name, resource) current_user.reset_authentication_token! respond_with resource, :location => after_sign_in_path_for(resource) end def update super end end – 在routes.rb中,我有: devise_for […]

在Devise中自定义路由到新用户注册页面Simple_Form_For将新表单发布到设计注册控制器

一个想法 – 我应该制作一个inheritance注册控制器的新控制器吗? 然后做另一个 devise_for :users, :controllers => {:registration => “newcontroller”} 将trial_signup.html.erb更改为new.html.erb 并在app / views / devise / registrations2 / new.html.erb中创建一个新文件夹 最新更新 app / views / devise / trial_signup.html.erb Trial Sign up resource_name, :url => sales_path(resource_name)) do |f| %> true, :input_html => { :class => “form-control” } %> { :class => “form-control” } %> true, […]

将Discourse SSO与现有的Rails站点与Devise结合起来

我有一个现有的rails应用程序,它使用设计作为用户身份validation。 我添加了一个话语论坛 ,一切顺利,它位于一个子域。 我已经在https://meta.discourse.org/t/official-single-sign-on-for-discourse/13045阅读了这篇文章,但是一旦用户登录,我仍然不知道如何处理设计方面的问题在现有的铁路网站上。 目前这是我理解的过程: 第1步:用户点击子域上的话语论坛。 用户需要登录才能点击登录按钮。 步骤2:将用户发送到现有rails站点的登录页面。 步骤3:用户登录rails站点。 Step4:用户应该被重定向到登录的话语论坛子域。 我的问题是 – 我需要做些什么来使用户在登录第3步时将其重定向回子域? 有没有人成功实现过这个? 我在该演练页面上看到了这段代码: class DiscourseSsoController < ApplicationController def sso secret = "MY_SECRET_STRING" sso = SingleSignOn.parse(request.query_string, secret) sso.email = "user@email.com" sso.name = "Bill Hicks" sso.username = "bill@hicks.com" sso.external_id = "123" # unique to your application sso.sso_secret = secret redirect_to sso.to_url("http://l.discourse/session/sso_login") end end 这是我需要在现有的rails应用程序中添加的内容吗? 我猜测解析检查该信息是否在URL中,如果是,它一旦完成设计登录过程就重定向,如果不是,它就像往常一样。 […]

覆盖Devise的注册控制器,以便在sign_up成功完成后允许重定向

我到处都看了,发现了很多信息……但没有什么对我有用而且我没有得到它:( 我知道您要覆盖注册控制器,如下所示: class Users::RegistrationsController < Devise::RegistrationsController def after_sign_up_path_for(resource) authors_waiting_path end end 然后按照Tony Amoyal http://www.tonyamoyal.com/2010/07/28/rails-authentication-with-devise-andcancan-customizing-devise-controllers/显示的示例,我应该改变我的路线更新新控制器的访问权限: devise_for :users, :controllers => { :registrations => “users/registrations” } do #get ‘/author/sign_up’, :to => ‘devise/registrations#new’ #get ‘/client/sign_up’, :to => ‘devise/registrations#new’ get ‘/author/sign_up’, :to => ‘users/registrations#new’ get ‘/client/sign_up’, :to => ‘users/registrations#new’ end 是的,我在这里有点奇怪,因为我正在捕捉一些特定的路径将它们发送到注册页面,这使我能够有效地创建2个注册场景。 在我覆盖注册控制器之前,我评论了我的内容。 即使所有这些和我的authors_waiting_path是一个有效的路径,它只是在注册后继续进入登录页面:( 这真令人沮丧。 亚历克斯 编辑:我也在设计维基上找到了这个: https : //github.com/plataformatec/devise/wiki/How-To : […]

Rails 4 +设计使用电子邮件或用户名和强参数登录

我是RoR的新手并且坚持这个设计问题。 我想允许用户使用电子邮件或用户名登录(使用用户名注册已经可以)。 我遵循了这些文章: 第1条和第2条 ,您可以看到以下结果: application_controller.rb class ApplicationController < ActionController::Base protect_from_forgery with: :exception before_filter :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password) } devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :password, :remember_me) } end end user.rb class User [:login] validates_uniqueness_of :username validates_presence_of :username validates :username, length: { in: 4..20 } def self.find_first_by_auth_conditions(warden_conditions) conditions = […]

使用来自请求标头的auth_token而不是使用Rails 3 / devise的POST / PUT参数

我需要在Rails 3.1 API中结合最新版本的设备使用基于令牌的身份validation。 到目前为止没问题。 现在我不想将我的:auth_token附加到客户端的POST / PUT参数,而是将此令牌作为请求标头发送,如HTTP_X_MYAPP_AUTH_TOKEN“。 我可以说服设计使用它而不是参数中的令牌吗? 是否可以实现这两者,以便我的API用户可以通过请求头或POST / PUT参数发送令牌? 问候。 费利克斯