2011-02-23 34 views
1

我已經添加用戶名到設計驗證設置,並出於某種原因,它不會將用戶名插入到數據庫中。數據庫在用戶名字段中輸入NULL。奇怪的設計/ rails問題沒有發送用戶名

我已經包含了遷移代碼,表單以及生成日誌,顯示它發送了實際的用戶名。

這裏是我做過什麼:

所以我增加了一個遷移添加一個用戶名,這是成功的:

class AddUsernameToUsers < ActiveRecord::Migration 
    def self.up 
    add_column :users, :username, :string 
    end 

    def self.down 
    remove_column :users, :username 
    end 
end 

我再編輯應用程序/視圖/設計/註冊/ new.html。 ERB包括用戶名文本字段:

<h2>Sign up</h2> 

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

    <p><%= f.label :username %><br /> 
    <%= f.text_field :username %></p> 

    <p><%= f.label :email %><br /> 
    <%= f.text_field :email %></p> 

    <p><%= f.label :password %><br /> 
    <%= f.password_field :password %></p> 

    <p><%= f.label :password_confirmation %><br /> 
    <%= f.password_field :password_confirmation %></p> 

    <p><%= f.submit "Sign up" %></p> 
<% end %> 

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

這裏是生產日誌是否有幫助:

Started POST "/users" for 136.152.162.173 at Wed Feb 23 12:46:12 -0800 2011 
    Processing by Devise::RegistrationsController#create as HTML 
    Parameters: {"commit"=>"Sign up", "authenticity_token"=>"K8m6Em7IqSTFQG8aAYE4faUMsL2E46uNAllNTcsEF08=", "utf8"=>"?~\~S", "user"=>{"password_confirmation"=>"[FILTERED]", "username"=>"pyramation", "password"=>"[FILTERED]", "email"=>"[email protected]"}} 
Rendered devise/mailer/confirmation_instructions.html.erb (1.1ms) 

任何幫助非常感謝!

+1

請你把你的用戶模型 – Augusto 2011-02-23 22:08:17

回答

4

您是否將用戶名添加到了您的用戶模型中的attr_accessible列表中?例如: -

attr_accessible :email, :password, :password_confirmation, :username 
+0

這實際上並不重要,因爲missing_method函數處理那些非定義的字段它不是必需的。 – nvez 2011-02-24 00:05:50

+0

@nvezJoséValim說這很重要,他是Devise的作者。 http://stackoverflow.com/questions/3953945/rails-devise-signup-form-not-accepting-custom-username-field/3967546#3967546 – Scott 2011-02-24 00:12:25

+0

啊..我看到..我有一個模型,它沒有它的工作,但後來我沒有註冊處理註冊,所以這可能是爲什麼,我的道歉很好,先生。 – nvez 2011-02-24 01:50:47