我将假设您有两个 ActiveModel:用户和消息。确保你有这样的类:
class User < ApplicationRecord
has_many :messages
end
class Message < ApplicationRecord
belongs_to :current_user, class_name: 'User', foreign_key: 'current_user_id'
belongs_to :to_user, class_name: 'User', foreign_key: 'to_user_id'
end
当您添加t.timestamps
到迁移中时,它会为您创建created_at
和updated_at
字段,这是一个小琐事。
现在我将为您硬编码原始 sql 查询:
def get_messages(current_user_id, to_user_id)
@messages = Message.where(' current_user_id=? OR receiver_user_id=? OR current_user_id=? OR receiver_user_id=? ',
current_user_id, current_user_id, to_user_id, to_user_id).order('created_at DESC')
end
order('created_at DESC')
如果您只想按升序排列,您可以按顺序播放,您可以将 DESC 替换为 ASC 或order(:created_at)
您可以设置任何其他查询条件,例如不显示已删除的消息等。您可以从官方 Ruby on Rails 文档中了解更多关于Active Record 查询接口的信息。