我正在尝试实现以下关系和对象调用
一个用户可以发送多条消息 (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