我在我的Rails应用程序中使用Clearance进行身份验证.该Clearance::User混入增加了一些验证的到我的User模型,但有这些,我想删除或覆盖一个.这样做的最佳方式是什么?
有问题的验证是
validates_uniqueness_of :email, :case_sensitive => false
Run Code Online (Sandbox Code Playgroud)
这本身并不坏,但我需要补充一下:scope => :account_id.问题是如果我将它添加到我的User模型中
validates_uniqueness_of :email, :scope => :account_id
Run Code Online (Sandbox Code Playgroud)
我得到了两个验证,而且Clearance添加的一个比我的更严格,所以我没有效果.我需要确保只有我的运行.我该怎么做呢?
我一直在使用rails_admin v0.7.0和清除gem这一点.我今天尝试将rails_admin更新为v1.0,但是我得到了一个未定义的变量或方法错误current_user.在v0.7.0中它似乎RailsAdmin::MainController继承自ApplicationController,而在v1.0中它直接继承ActionController::Base,这可以解释current_user现在是未定义的(我相信current_user是ApplicationController用清除宝石定义的).但是,由于我没有找到其他人遇到这个问题,我想我一定是在遗漏一些东西.
我不是那个在这个应用程序上设置许可的人,但我认为我们不会做任何不符合标准的事情会影响到这一点.Clearance::Controller包括在内ApplicationController.没有特别的定义current_user.
配置/初始化/ rails_admin.rb
RailsAdmin.config do |config|
# Popular gems integration
## Clearance
config.authorize_with do |controller|
unless current_user.admin?
redirect_to(
main_app.root_path,
alert: "You are not permitted to view this page"
)
end
end
config.current_user_method { current_user }
end
Run Code Online (Sandbox Code Playgroud) 我有一个关于Clearance和Pundit的Rails应用程序,我正在尝试创建"团队","团队负责人"可以邀请其他用户加入他们的团队.我愿做类似的东西来devise_invitable,但间隙.
以下是我的计划:
通过注册表单注册该站点的用户将自动分配一个唯一的团队ID,并成为"团队负责人".他们在表单上看不到此ID.(可以这样做的另一种方法是创建一个在注册时保存的唯一团队名称.)最好的方法是创建一个before_filter,用于在注册时分配团队ID和团队负责人吗?
团队ID或名称将是唯一的,每个用户只能属于一个团队.协会看起来像这样:
球队
has_many :users
Run Code Online (Sandbox Code Playgroud)
用户
belongs_to :team
Run Code Online (Sandbox Code Playgroud)一旦这个"团队领导"创建帐户,此用户可以邀请其他用户通过填写用户#新形式类似于间隙注册表单(姓名,电子邮件等),这种形式会造成用户加入团队,将他们分配给团队领导团队.可以为它们分配一个随机密码以提供给Clearance,以便新用户通过验证.
一旦用户由团队负责人创建,他们将使用随机生成的密码保存在数据库中,并将Mailer发送给与标准清除密码重置邮件程序类似的受邀用户.它只是给他们一个通知,他们已被邀请加入团队,并提供重置密码然后登录的链接.它基本上是清除密码重置梅勒与不同的副本.
这是一个不错的策略还是有一个更广泛使用的模式,我缺少用Clearance和Pundit来解决这个问题?我从来没有用Rails做过这样的事情,所以我不知道这是否是一种使用Clearance的管道式磁带方式.
我要做的是current_user在定义Cucumber步骤时使用(依赖)方法.我在我的项目中使用了Clearance.
首先我尝试使用sign_in但它没有用(我猜黄瓜世界不知道清除方法......).
那么如何让Cuckes识别current_user和sign_in/ sign_out方法呢?
session integration-testing ruby-on-rails cucumber clearance
我正在编写一个Rails 3.1应用程序,使用Clearance for auth.我想添加标准的Facebook身份验证:允许用户继续直接注册/认证(使用Clearance)或通过FB注册; 如果他们通过FB登录/注册并且我们已经拥有相关电子邮件地址的帐户,请合并帐户.
有很好的文档可以使用OmniAuth/Devise,但我没有找到类似的清除.那里有(积极维护的)宝石在这里提供帮助,甚至只是教程吗?到目前为止我发现的最好的是BlueLightSpecial,但是它和FB Connect使用的它不再是主动维护的.
我是一个相对较新手,因此非常感谢您的协助。
我正在使用带有Clearance gem的Rails 4.2进行身份验证。我希望有人能描述覆盖控制器以在sign_up表单上包含自定义属性的最佳实践。
我已经阅读了很多建议,其中包含各种建议,其中许多来自以前版本的不使用strong_parameters的rails。
如果有人可以简要介绍我需要超越的方法(user_params / user_from_params / etc),我将不胜感激。我可以通过定义只包含@user = User.new的新“ new”方法和使用.permit的新“ user_params”方法来使事情正常运行,但是我担心在user_from_params中绕过的默认代码。
任何有关最佳实践的建议都很棒!
谢谢
我有基本的清关设置 -
rails generate clearance:install
Run Code Online (Sandbox Code Playgroud)
和
rails generate clearance:views
Run Code Online (Sandbox Code Playgroud)
在我的admin_controller中,我有
before_filter :authorize
Run Code Online (Sandbox Code Playgroud)
这可以确保用户已登录.如何为用户设置"admin"权限,并确保用户在允许用户进入管理控制器之前拥有权限?
有更好的解决方案吗?
谢谢!
安德鲁
由于在我们的 Rails 应用程序中删除用户的错误,我试图将另一个用户记录强制转换为旧记录 ID。
$ rails console
> User.find(2)
ActiveRecord::RecordNotFound: Couldn't find User with 'id'=2
> replacer = User.find(5)
=> #<User id: 5, created_at: [omitted for brevity ...] >
replacer.id = 2
=> 2
replacer.save
=> true
> User.find(2)
ActiveRecord::RecordNotFound: Couldn't find User with 'id'=2
> User.find(5)
ActiveRecord::RecordNotFound: Couldn't find User with 'id'=5
> replacer
=> #<User id: 2, created_at: [omitted for brevity ...] >
> replacer.valid?
=> true
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
clearance ×8
ruby ×2
cucumber ×1
facebook ×1
gem ×1
pundit ×1
rails-admin ×1
session ×1
validation ×1