小编use*_*324的帖子

Rails 3验证IPv4和IPv6格式

我知道IPv4和IPv6的验证格式.但不确定如何将它们组合在一起,因此至少有一种格式应该是真的.这是我的验证

validates :src_ip_addr, :presence => true, :uniqueness => true,
            :format => { :with => Resolv::IPv4::Regex, :message => "Not an valid IPv4 format"}

  validates :src_ip_addr, :presence => true, :uniqueness => true,
            :format => { :with => Resolv::IPv6::Regex, :message => "Not an valid IPv6 format"}
Run Code Online (Sandbox Code Playgroud)

如何将它们组合起来如果一种格式正确则验证应该有效.仅当ipv4和ipv6格式不正确时才会失败.

谢谢.

regex validation ruby-on-rails ip-address

6
推荐指数
1
解决办法
1805
查看次数

设计会话控制器覆盖

我重写Devise会话控制器来调整用户登录行为.在我的情况下,我有两种用户 - 主用户和子用户.如果主用户为子用户设置登录访问权限,则子用户只能登录.这是我的用户模型

class User < ActiveRecord::Base
  has_many :child_users, :class_name => "User",:foreign_key => "parent_id", :dependent => :destroy
  belongs_to :parent, :class_name => "User"
end
Run Code Online (Sandbox Code Playgroud)

这是我的会话控制器

class SessionsController < Devise::SessionsController
  def create
    logger.info "Attempt to sign in by #{ params[:user][:email] }"
    @user = User.find_by_email(params[:user][:email])
    if @user != nil
      if !@user.is_portal_access?
        flash[:notice] = "#{ @user.email } do not have portal access."
        redirect_to :controller => 'welcome'
      else
        super
      end
    end
  end

  def destroy
    logger.info "#{ current_user.email } signed out"
    super
  end    
end
Run Code Online (Sandbox Code Playgroud)

当我使用正确的凭证登录时使用当前代码 - …

ruby-on-rails devise

6
推荐指数
1
解决办法
1万
查看次数

如何使用工厂女孩和黄瓜创建用户记录?

我从来没有使用工厂女孩,我从本周开始测试所以所有这些新东西让我疯了.谁能解释一下使用工厂女孩创建记录的简单方法.

这是用例.我已经使用黄瓜创建了一个测试,它创建了一个用户,并创建了其他记录,如帐户,用户类别.现在我正在编写第二个测试用例,我说应该没有测试数据(我可以使用从第一次测试创建的数据,但不希望从其他测试用例中依赖.).所以我想使用工厂女孩为我和相关的用户记录创建一个用户.在这里,我的测试无需使用工厂女孩.

@no-database-cleaner
Feature: Managing users parent child relationships
  In order to use portal
  I want to create parent child relationships

  Scenario:  Creating a child user 
    Given I am on the homepage

    When I attempt to sign in with following user account:
      | email address         | password |
      | abc@company1.com   | password |

    Then I should see "abc@company1.com" message on page
    When I follow "All Child Users"
    Then I should see "Add Sub Child"
    When I click "Add Sub Child" …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails cucumber factory-bot

2
推荐指数
1
解决办法
5541
查看次数