2013-02-18 20 views
0

我有一個奇怪的錯誤,如果我嘗試創建一個新的模型對象。奇怪的是,錯誤消息中的列在數據庫中不可用。 這是我做過什麼:ghost db-column in rails。未定義的方法`電子郵件'

我的控制檯輸出:

1.9.3p286 :002 > person = OZBPerson.new 
    => #<OZBPerson Mnr: nil, UeberPnr: nil, Passwort: nil, PWAendDatum: nil, Antragsdatum: nil, Aufnahmedatum: nil, Austrittsdatum: nil, Schulungsdatum: nil, Gesperrt: 0, SachPnr: nil, encrypted_password: "$2a$10$...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil> 
1.9.3p286 :003 > person.valid? 
    NoMethodError: undefined method `email' for #<OZBPerson:0x007ffd2b30dee8> 
     from /usr/local/rvm/gems/ruby-1.9.3-p286/gems/activemodel-3.2.3/lib/active_model/attribute_methods.rb:407:in `method_missing' 

我的軌道模型:

class OZBPerson < ActiveRecord::Base 
    self.table_name = "ozbperson" 
    self.primary_key = :Mnr 

    attr_accessible :Mnr, 
    :UeberPnr 
end 

我的數據庫表:

CREATE TABLE `ozbperson` (
`Mnr` int(10) unsigned NOT NULL, 
`UeberPnr` int(10) unsigned DEFAULT NULL, 
`Passwort` varchar(35) DEFAULT NULL, 
`PWAendDatum` date DEFAULT NULL, 
`Antragsdatum` date DEFAULT NULL, 
`Aufnahmedatum` date DEFAULT NULL, 
`Austrittsdatum` date DEFAULT NULL, 
`Schulungsdatum` date DEFAULT NULL, 
`Gesperrt` tinyint(2) NOT NULL DEFAULT '0', 
`SachPnr` int(10) unsigned DEFAULT NULL, 
`encrypted_password` varchar(64) NOT NULL DEFAULT '$2a$10$...', 
`reset_password_token` varchar(128) DEFAULT NULL, 
`reset_password_sent_at` datetime DEFAULT NULL, 
`remember_created_at` datetime DEFAULT NULL, 
`sign_in_count` int(10) DEFAULT '0', 
`current_sign_in_at` datetime DEFAULT NULL, 

有沒有這樣的字段像「電子郵件」,但我仍然收到此錯誤消息。哪裏不對?

回答

0

我猜這是因爲你正在使用設計。 Devise's需要一個電子郵件字段,因此可以使用像reset_password_token(通過電子郵件查找用戶的嘗試)等方法。如果你不使用設計忽略這個答案,否則你需要添加電子郵件給你的人。

+0

是的,你說得對,這是Devise的錯。我現在已經恢復了郵件列。 – user2083947 2013-02-18 17:39:43

1

如果使用的是設計,將它添加到你的模型

def email_required? 
    false 
end 

它改寫了當前存在於色器件模型,它是真實的。

+0

好的一點就是,你已經得到了我的讚賞。我也應該提出這個建議!我只是想,如果他正在使用設計,他可能想利用其可確認/可恢復/等功能。 – Sean 2013-02-18 17:23:00

+0

我認爲你只能採用其中一種方式 - 使電子郵件字段成爲唯一標識符並使​​用可確認/可恢復/等,或刪除電子郵件唯一標識符,並失去使用可確認/可恢復/等的能力。 – Catfish 2013-02-18 17:25:26

+0

這就是我的意思:)我沒有列出email_required?選項,因爲如果您不想使用需要電子郵件的所有功能,我不知道爲什麼要添加如設計這樣的大型圖書館。 – Sean 2013-02-18 17:28:40

相關問題