描述:每一個用戶(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裏面給須要提交的字段進行賦值,而後點擊提交就會將隱藏字段和輸入字段的值一塊兒進行提交。