我想这样做以便以下内容将返回收到的所有消息:
current_user.messages.received
以下内容将使我看到所有已发送的消息:
current_user.messages.sent
我遇到的问题是我不确定如何指定单个表中的2列都代表用户的外键。如何将sender_id和recipient_id与用户关联?
分贝/ schema.rb
create_table "messages", force: true do |t|
t.string "notification", null: false
t.integer "user_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "recipient_id", null: false
end
应用/模型/ message.rb
class Messages < ActiveRecord::Base
has_and_belongs_to_many :user
end
应用/模型/ user.rb
class User < ActiveRecord::Base
has_and_belongs_to_many :messages, dependent: :destroy
end
答案 0 :(得分:0)
在这种情况下,每封邮件只有一个发件人和可能的多个收件人 所以你的模型可能是:
class Messages < ActiveRecord::Base
has_and_belongs_to_many :receivers, class_name: 'User'
belongs_to :sender, class_name: 'User'
end
和
class User < ActiveRecord::Base
has_many :messages, dependent: :destroy
has_and_belongs_to_many :received_messages, class_name: 'Message'
end
你需要一个联接表来发送消息&#34;:
class CreateJoin < ActiveRecord::Migration
def change
create_join_table :users, :messages
end
end
现在您可以访问已发送和已接收的消息:
current_user.messages # sent messages
current_userreceived_messages