小编ben*_*che的帖子

Rails 4 has_many through - 消息发送方和接收方

我正在尝试实现以下关系和对象调用

一个用户可以发送多条消息 (user.sent_messages) 一条消息可以有一个发送者 (message.sender)

一个用户可以接收很多消息(user.received_messages)一个消息可以有很多接收者(message.receivers)

我的架构如下所示:

create_table "activities", force: true do |t|
 t.integer  "sender_id"
 t.integer  "message_id"
 t.datetime "created_at"
 t.datetime "updated_at"
 t.integer  "receiver_id"
end

create_table "messages", force: true do |t|
 t.text     "body"
 t.datetime "created_at"
 t.datetime "updated_at"
 t.boolean  "read",       default: false
end
Run Code Online (Sandbox Code Playgroud)

我的模型看起来像这样:

class User < ActiveRecord::Base
 has_many :activities, class_name: 'Activity', foreign_key: 'sender_id', dependent: :destroy
 has_many :sent_messages, through: :activities

 has_many :reverse_activities, class_name: 'Activity', foreign_key: 'receiver_id'
 has_many :received_messages, through: :reverse_activities
end

class Activity < ActiveRecord::Base
belongs_to :sent_messages, class_name: 'User'
belongs_to :received_messages, class_name: …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rails-models ruby-on-rails-4 rails-activerecord

4
推荐指数
1
解决办法
2024
查看次数