Rails學習筆記 使用者關注功能(一)

2021-07-02 03:47:13 字數 1585 閱讀 8738

這裡是整本書最難的部分,拆成三個部分。

關係模型的實現:

這裡的難點在於如何實現使用者之間相互關注的資料模型,當乙個使用者a關注b或者取消關注b時發生了什麼? 發生的是relation的建立與銷毀。

因此這裡的關係模型用relationship來實現,裡面兩項,followed_id和follower_id 分別表示被關注的id和關注者的id。

user與relationship是一對多的關係,不過這裡的一對多有兩個,乙個是對應多個followed_id,另乙個是對應多個follower_id,所以user有兩個外來鍵,分別是followed_id,follower_id。

同樣,relationship也以兩種方式從屬於user,乙個是following(也就是前面的followed),乙個是folower,這兩個都是user,但是取了別名。這兩者均以user的id為外來鍵。

對relationship本身也要建立索引。

貼出相應的**如下:

user模型中如下:

[ruby]view plain

copy

print?

"code"

class="ruby">has_many :relationships, foreign_key: "follower_id", dependent: :destroy

has_many :followed_users, through: :relationships, source: :followed

has_many :reverse_relationships, foreign_key: "followed_id",  

class_name: "relationship",  

dependent: :destroy

has_many :followers, through: :reverse_relationships,source: :follower

relationship模型中的**如下:

[ruby]view plain

copy

print?

class relationship 

belongs_to :follower, class_name: "user"

belongs_to :followed, class_name: "user"

validates :follower_id, presence: true

validates :followed_id, presence: true

end

這裡需要注意的是reverse_relationships這張表,他實際上並不存在,因為relationships是個對稱的表,我把follower_id做主鍵,能夠查詢乙個使用者關注了那些人,反過來我把followed_id做主鍵,可以查詢該使用者有多少粉絲。

Rails學習筆記(二)

1 在啟動web伺服器時,可以通過加上 e選項,指定啟動時選用哪個環境 ruby script server e development test production 2 rails裡強調 慣例重用配置 從資料庫中的表,到控制器,到模型,再到檢視,命名是有關聯的!檔案的存放路徑也是有關聯的。我們在...

Rails學習筆記(四)

1 rails內建了很多驗證,在提交表單時,可以直接使用rails提供的驗證。rails中關於程度和資料庫的連線環節是在model裡的,在model裡使用validates x of可以完成常用的驗證。常用的有 1 validates presence of 用於驗證非空 輸入空格也算空 2 val...

Rails 架構學習筆記

rails給web應用的結構上強加了很多約束,而正是這些約束使得應用的開發變得很容易。也許是因為無規矩不成方圓,也許是因為規定好了道路是的開發者不用在選擇面前糾結和徘徊,也許是從框架上植入了最佳實踐,是的新手不那麼容易犯前人的錯誤。size medium color blue models,view...