自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Rails 之旅第 1 天:一個令人困惑的 Rails 錯誤信息

開發(fā) 項目管理
今天,我開始了一個 Recurse Center 的班次學(xué)習(xí)!我認(rèn)識了一些人,并開始了一個小小的有趣的 Rails 項目。我想我今天不會談太多關(guān)于這個項目的實(shí)際內(nèi)容,但這里有一些關(guān)于 Rails 一天的快速筆記。

[[356131]]

今天,我開始了一個 Recurse Center 的班次學(xué)習(xí)!我認(rèn)識了一些人,并開始了一個小小的有趣的 Rails 項目。我想我今天不會談太多關(guān)于這個項目的實(shí)際內(nèi)容,但這里有一些關(guān)于 Rails 一天的快速筆記。

一些關(guān)于開始的筆記

在建立 Rails 項目的過程中,我學(xué)到的主要是:

  1. 它默認(rèn)使用 sqlite,你必須告訴它使用 Postgres。
  2. Rails 默認(rèn)包含了大量的東西,你可以禁用。

我安裝并 rm -rf Rails 大概 7 次后才滿意,最后用了這個咒語:

  1. rails new . -d postgresql --skip-sprockets --skip-javascript

主要是因?yàn)槲蚁胗?Postgres 而不是 sqlite,而且跳過 sprockets 和 javascript 似乎能讓安裝 Rails 的速度更快,而且我想如果我決定要它們的話,我可以在以后再安裝。

官方的 Rails 指南真的很不錯

我在創(chuàng)建我的 Rails 入門應(yīng)用時主要參考了 2 個資源:

一個神秘的錯誤信息:undefined method 'user'

我喜歡 bug,所以今天我遇到了一個奇怪的 Rails 錯誤! 我有一些看起來像這樣的代碼:

  1. @user = User.new(user_params)
  2. @user.save

很簡單吧?但當(dāng)這段代碼運(yùn)行時,我得到了這個令人費(fèi)解的錯誤信息:

  1. undefined method `user' for #<User:0x00007fb6f4012ab8> Did you mean? super

我對這里發(fā)生的事情感到超級困惑,因?yàn)槲覜]有調(diào)用一個叫做 user 的方法。我調(diào)用的是 .save。什么嘛?!我對此感到困惑和沮喪,大概呆了 20 分鐘,最后我看了看我的 User 模型,發(fā)現(xiàn)了這段代碼:

  1. class User < ApplicationRecord
  2. has_secure_password
  3.  
  4. validates :user, presence: true, uniqueness: true
  5. end

validates :user... 應(yīng)該是一些 Rails 魔法,驗(yàn)證每個 User 都有一個 username,而且用戶名必須是唯一的。但我犯了一個錯,我寫的是 user 而不是 username。我把這個問題解決了,然后一切都正常了!萬歲。

我仍然不明白我應(yīng)該如何調(diào)試這個問題:堆棧跟蹤告訴我問題出在 @user.save 行,根本沒有提到 validates :user 的事情。我覺得一定有辦法調(diào)試這個問題,但我不知道是什么辦法。

我學(xué) Rails 的目的就是想看看 Rails 的魔力在實(shí)踐中是如何發(fā)揮的,所以這是個很有意思的 bug,早早的就掉坑里了。

一個簡單的用戶管理系統(tǒng)

我決定在我的玩具應(yīng)用中加入用戶。我在網(wǎng)上搜索了一下,發(fā)現(xiàn)有一個非常流行的叫做 devise 的工具可以處理用戶。我發(fā)現(xiàn)它的 README 有點(diǎn)讓人不知所措,而且我知道想要在我的玩具應(yīng)用中建立一個非常簡陋的用戶管理系統(tǒng),所以我遵循了這個名為《Rails 5.2 中從零開始進(jìn)行用戶驗(yàn)證》的指南,到目前為止,這個指南似乎還不錯。Rails 似乎已經(jīng)有了一大堆管理用戶的內(nèi)置東西,我真的很驚訝于這本指南的短小和我需要寫的代碼之少。

我在實(shí)現(xiàn)用戶功能的時候了解到,Rails 有一個內(nèi)置的神奇的會話管理系統(tǒng)(參見 Rails 會話如何工作。默認(rèn)情況下,所有的會話數(shù)據(jù)似乎都存儲在用戶電腦上的 cookie 中,不過我想如果 cookie 太大了,你也可以把會話數(shù)據(jù)存儲在數(shù)據(jù)庫中。

已經(jīng)有了會話管理系統(tǒng),有了 cookie 和用戶,卻不太清楚到底發(fā)生了什么,這肯定是有點(diǎn)奇怪的,但也是挺好玩的!我們會看看情況如何。我們將拭目以待。

明天:更多的 Rails!

也許明天我可以在實(shí)現(xiàn)我的有趣的 rails 應(yīng)用的想法上取得一些進(jìn)展! 

 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2020-12-07 19:00:29

Rails

2023-12-08 11:05:00

GitLinux

2021-10-09 13:48:11

操作符Python運(yùn)算符

2019-04-25 06:07:17

物聯(lián)網(wǎng)平臺物聯(lián)網(wǎng)IOT

2011-02-21 13:41:20

Postfix問題錯誤

2022-04-30 18:38:28

NushellShellLinux

2024-09-03 16:38:11

2015-10-19 17:38:01

AnsibleDocker應(yīng)用部署

2010-03-10 14:34:52

Python異常處理

2023-08-27 08:57:31

2009-12-16 09:20:25

ScalaErlangRuby

2009-04-20 09:09:46

PHP錯誤信息錯誤代碼

2023-10-27 11:27:28

2021-07-14 17:39:46

ReactRails API前端組件

2023-11-27 00:39:46

2020-10-28 21:00:38

RailsMVC命令

2012-05-16 09:29:25

JavaRailsJVM

2024-04-29 14:45:20

ChatGPT

2012-12-27 15:36:19

Android開發(fā)錯誤處理

2009-08-27 10:21:22

Ruby on Rai
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號