Rails 4种子设计管理员

时间:2014-06-24 01:28:49

标签: ruby-on-rails ruby-on-rails-4 devise

我已经看到了一些关于如何通过设计播种用户/管理员/人员的问题,但没有一个能为我工作,我认为这是因为我使用的是rails4。

我真的需要一粒种子。所以我将它直接放入我的种子文件

        admin = Admin.new
        admin.email = 'adminone@gmail.com'
        admin.password = "topsecret"
        admin.password_confirmation = "topsecret"
        admin.save!

那不起作用......

这两个都没有...

admin = Admin.create! :name => 'John Doe', :email => 'john@gmail.com', :password => 'topsecret', :password_confirmation => 'topsecret'

种子功能,但是当我尝试登录时,我得到了无效的组合。

思考?我正在使用

 devise :database_authenticatable, 
    :registerable,
    #:recoverable, 
    :rememberable, 
    :trackable, 
    :validatable

我的模特。

更新:这是我的整个ApplicationController.rb

class ApplicationController < ActionController::Base
before_filter :set_mail
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception

  def set_mail
      @mail_subscriber = MailSubscriber.new(mail_subscriber_params)
  end
private

def current_cart 
  cart = Cart.find(session[:cart_id])
  unless cart.active?
    cart = Cart.create
    session[:cart_id] = cart.id
  end
  cart
 rescue ActiveRecord::RecordNotFound
  cart = Cart.create
  session[:cart_id] = cart.id
  cart
 end
 def mail_subscriber_params
  params.fetch(:mail_subscriber, {}).permit(:email, :name)
 end 
end

更新#2

admin.valid_password?("topsecret")

给了我,所以种子一定不行吗?

BCrypt::Errors::InvalidHash: invalid hash

1 个答案:

答案 0 :(得分:0)

Admin.create! :email => 'john@gmail.com', :password => 'topsecret', :password_confirmation => 'topsecret'

没有用,但是

Admin.create :email => 'john@gmail.com', :password => 'topsecret', :password_confirmation => 'topsecret'

确实有效。不同的是!在“创造”之后

希望这有助于将来遇到此问题的人