我跟隨Michael's Ruby on Rails tutorial (Chapter 6.2.2),當我去rails console --sandbox
嘗試創建用戶時,輸出完全過時。Rails控制檯輸出髒/過時的數據
我更新了一個用戶的屬性,我返回用戶和控制檯輸出nil
所有屬性。但是,如果我輸出user.attribute
的數據在那裏。
第一次保存失敗,因爲用戶必須有一個名稱,但即使在addind驗證之前我有這個問題。
缺少什麼我在這裏?我遵循了所有的指示,我正在做非常基本的東西。我執行以下命令:
$ rails console --sandbox
Loading development environment in sandbox (Rails 4.0.2)
Any modifications you make will be rolled back on exit
2.1.0 :001 > user = User.new(name: "", email: "[email protected]")
=> #<User id: nil, name: nil, email: nil, citizen_number: nil, created_at: nil, updated_at: nil>
2.1.0 :002 > user.save
(0.1ms) SAVEPOINT active_record_1
(0.2ms) ROLLBACK TO SAVEPOINT active_record_1
=> false
2.1.0 :003 > user.valid?
=> false
2.1.0 :004 > user.name = "Bob"
=> "Bob"
2.1.0 :005 > user.valid?
=> true
2.1.0 :006 > user
=> #<User id: nil, name: nil, email: nil, citizen_number: nil, created_at: nil, updated_at: nil>
2.1.0 :007 > user.save
(0.2ms) SAVEPOINT active_record_1
SQL (6.2ms) INSERT INTO "users" ("created_at", "updated_at") VALUES (?, ?) [["created_at", Sat, 08 Feb 2014 19:15:37 UTC +00:00], ["updated_at", Sat, 08 Feb 2014 19:15:37 UTC +00:00]]
(0.1ms) RELEASE SAVEPOINT active_record_1
=> true
2.1.0 :008 > user
=> #<User id: 1, name: nil, email: nil, citizen_number: nil, created_at: "2014-02-08 19:15:37", updated_at: "2014-02-08 19:15:37">
我的用戶模型:
class User < ActiveRecord::Base
attr_accessor :name, :email, :citizen_number
VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
VALID_CITIZEN_NUMBER_REGEX = /[1-9]\d{7,}/
validates :name, presence: true, length: { maximum: 50 }
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false }
validates :citizen_number, presence: true, format: { with: VALID_CITIZEN_NUMBER_REGEX }, uniqueness: true
before_save { lowercase_email() }
def lowercase_email()
self.email = email.downcase
end
end
我繼續教程並忽略了這個問題,所以最新的源代碼有更多的驗證。儘管如此,你應該在這裏有一個非常穩定的版本:https://github.com/dialex/dcid/tree/288ac1608c97117ab766e6d2c4c051b084ea8804我也是一個n00b所以是的:P – dialex
DiAlex - 我克隆了建模用戶分支(其他人不'沒有用戶模型)。事實上,我承認了同樣的錯誤和古怪,無論有沒有驗證。當我保存時,它會保存,但數據仍然很奇怪。在這裏查看結果(https://gist.github。com/jmcbri/9021295) – codenoob
我還創建了一個全新的應用程序,並創建了一個用戶模型,並且它符合您的期望:(https://gist.github.com/jmcbri/9021337)現在我們必須弄清楚你的應用和默認設置有什麼不同。懷疑我可以做到這一點,但我會嘗試。 – codenoob