我是 Rails 開發的新手,我正在嘗試構建一個具有基本功能的簡單信使應用程式。該應用程式具有三個模型:User、Message和Room。房間和用戶之間存在關系:
class Room < ApplicationRecord
has_many :messages
has_many :users, through: :messages
end
此外,訊息模型如下所示:
class Message < ApplicationRecord
belongs_to :user
belongs_to :room
end
問題是:如何current_user使用 ActiveRecord 選擇屬于我所屬的所有房間的所有訊息?
例如,如果我的用戶在房間 1 有訊息 1、2、3,在房間 2 有訊息 4、5、6,但他只是訊息 1 和 4 的作者,我需要選擇所有 6 條訊息。
我只能通過 for 回圈來實作這一點,這是最丑陋和最低效的方式。
uj5u.com熱心網友回復:
User將這三個關聯添加到您的模型中
class User < ApplicationRecord
has_many :messages
has_many :rooms, through: :messages
has_many :all_messages, through: :rooms, class_name: 'Message', source: :messages
end
在您的代碼中,您可以使用以下內容:
current_user.all_messages
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/489668.html
