簡短清晰的用戶--博客--評論總結

描述:每一個用戶(user)均可以發博客(issue),不一樣的用戶能夠對一個博客作出評論(comment) 數據庫

 

 

數據模型之間的關係

用戶與博客之間是1對多關係,一個用戶能夠發多個博客,一個博客只屬於一個用戶 服務器

博客與評論之間是1對多關係,一個博客底下能夠有多條評論,一條評論只能屬於一個博客 spa

用戶與評論之間是1對多關係,一個用戶能夠發表多條評論,一條評論只能屬於一個用戶 3d

完整的數據模型關係以下: orm

 

添加如上關係模型的做用: blog

has_many :comments 博客

而後到 comment.rb 中添加 it

belongs_to :user form

這樣就可使用 @comment.user.name 這樣的語法了。 登錄

 

 

最終的表結構

 

 

控制器代碼講解

(1)用戶控制器中都是登錄退出註冊這樣的代碼,跟發佈博客和評論一點關係沒有

(2)博客控制器

(3)評論控制器

注意:一條博客能夠被不一樣的用戶評論,咱們須要可以知道評論的發起人的信息,錯誤的辦法就是給評論模型添加用戶名和郵箱字段。正確的方式應該是:

用戶名和郵箱這些字段已經存在用戶模型之中了,咱們不須要再重複定義,只要評論模型和用戶模型經過user_id字段關聯起來便可。並且這樣作的好處是登錄會保存當前用戶,因此咱們發表評論時自動是當前登陸用戶進行發表評論。

視圖代碼注意事項

咱們在發表評論時,實際完成評論保存到數據庫中的動做代碼是:

能夠看到要提交上面那三個字段,可是咱們的視圖表單中應該只顯示評論的輸入框就能夠了

issue_id和user_id字段不該該在視圖頁面手動輸入,而是應該不顯示這些輸入框,可是點擊提交仍是能把這些字段的值提交給服務器。

作法以下:

必須在form_for裏面添加須要提交的字段名稱,而對於不須要在視圖中顯示但又必須提交給服務器的字段咱們使用hidden_field。

issue_id和user_id字段應該是自動關聯的纔對,由於視圖裏面對這些隱藏字段沒法輸入值,因此咱們先在new裏面給須要提交的字段進行賦值,而後點擊提交就會將隱藏字段和輸入字段的值一塊兒進行提交。

相關文章
相關標籤/搜索