2012-07-26 39 views
2

每當我打出了牌子的按鈕,我得到以下錯誤:設計未定義的方法`電子郵件」

NoMethodError in Devise/sessions#new 

Showing /Users/chanel.n/svn- work/gwb/trunk/PMOCCU/ProcessEnforcer/app/views/devise/sessions/new.html.erb where line #5 raised: 

undefined method `email' for #<User id: nil, name: nil, created_at: nil, updated_at: nil> 
Extracted source (around line #5): 

2: 
3: <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %> 
4: <div class="field"><%= f.label :email %><br /> 
5: <%= f.email_field :email %></div> 
6: 
7: <div class="field"><%= f.label :password %><br /> 
8: <%= f.password_field :password %></div> 
Rails.root: /Users/chanel.n/svn-work/gwb/trunk/PMOCCU/ProcessEnforcer 

Application Trace | Framework Trace | Full Trace 
app/views/devise/sessions/new.html.erb:5:in `block in _app_views_devise_sessions_new_html_erb___4179931318693150703_70215900182100' 
app/views/devise/sessions/new.html.erb:3:in `_app_views_devise_sessions_new_html_erb___4179931318693150703_70215900182100' 

這裏是我的用戶模型,其中包括電子郵件:

class User < Role 
has_and_belongs_to_many :roles 

attr_accessible :name, :roles 

# Include default devise modules. Others available are: 
# :token_authenticatable, :confirmable, 
# :lockable, :timeoutable and :omniauthable 
devise :database_authenticatable, :registerable, 
    :lockable, :timeoutable, :trackable, :validatable, :token_authenticatable 

# Setup accessible (or protected) attributes for your model 
attr_protected :email, :password, :password_confirmation, :department, :encrypted_password 
# attr_accessible :title, :body, :remember_me 

validates_presence_of :email 

end 

無論出於何種原因,它不承認電子郵件。

有沒有其他人遇到過這個問題?

回答

0

您的電子郵件字段是不是在用戶模式訪問,你應該讓訪問使用:

attr_accessible :name, :roles, :email 
+0

非常感謝。這工作。 – 2012-07-26 22:22:59

0

設計默認使用電子郵件作爲登錄,因此它需要你有:email和:encrypted_pa​​ssword字段。

您的User模型中沒有任何一個。所以,你需要添加這些字段。

+0

我的用戶模型中確實有電子郵件。 – 2012-07-26 20:18:20

+0

我在上面添加了用戶模型。 – 2012-07-26 20:22:35

0

其他建議並沒有在我的案件有關。我的設計版本過時了。升級到3.2.4爲我解決了它。

主要的問題是看起來,設計產生的遷移在新版本中是不同的。

相關問題