2017-02-01 40 views
1

如何將許可證密鑰與rake任務相匹配,並在註冊時如果密鑰錯誤則拋出錯誤。如何在registration.erb文件中添加rake任務以匹配文本字段值

#sign up form  
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 
     <%= devise_error_messages! %> 

     <div class="field"> 
     <%= f.label :email %><br /> 
     <%= f.text_field :email, required: true %> 
     </div> 

     <div class="field"> 
      <%= f.label :username %><br /> 
      <%= f.text_field :username %> 
     </div> 

     <div class="field"> 
      <%= f.label :licensekey %><br /> 
     </div> 

     <div class="field"> 
      <%= f.label :contactno %><br /> 
      <%= f.text_field :contactno %> 
     </div> 

     <div class="field"> 
     <%= f.label :password %> 
     <% if @minimum_password_length %> 
     <em>(<%= @minimum_password_length %> characters minimum)</em> 
     <% end %><br /> 
      <%= f.password_field :password, maxlength:14, required: true, pattern:'[a-zA-Z0-9]' %> 
     </div> 

     <div class="field"> 
     <%= f.label :password_confirmation %><br /> 
     <%= f.password_field :password_confirmation, autocomplete: "off" %> 
     </div> 

     <div class="actions"> 
     <%= f.submit "Sign up" %> 
     </div> 
    <% end %> 

    <%= render "devise/shared/links" %> 

這裏是Rake任務我試着去定義

require 'rake' 
task :new => :environment do 
    dump_key = "P1000FFSEJZHGRDUR1CSU73A" 
end 
+1

由於某些特定的原因,您是否需要將它作爲耙子任務? –

+0

我沒有看到必要的耙子任務,查看下面的答案,我添加了一個選項,如果你仍然想在控制器中運行耙子任務。 – SsouLlesS

回答

0

看你不必爲此創建rake任務。

我會假設licensekey是你已經用Devise定義correctly的用戶屬性。

然後,您可以重寫設計registration_controller.rb並執行驗證。

#registration_controller.rb 
class RegistrationsController < Devise::RegistrationsController 
    def create 
     #HERE YOU CAN PERFORM YOUR VALIDATION 
    end 
end 

不過,我會建議在模型級別而不是控制水平進行驗證,也運行Rake任務內的控制器是不是一個好的做法。如果您不確定如何覆蓋設計create動作檢查this線程。

更新

在你還是想從一個rake任務運行驗證,那麼你就可以運行你的色器件控制器的create操作中耙任務情況:%x[rake name_task]與你的任務的名稱替換name_task

相關問題