rails:DM 발송 기능의 간단한 실현~모델~

4854 단어 RubyRails

직접 메시지 기능


검색이 힘들기 때문에 DM 기능에 대해 간단하게 설치 절차를 소개합니다.
전제로 DM 기능의 실현
① 대화방을 만들고 대화 기능을 설치하는 방법(중간에 두 개의 테이블이 있음)
② 대화방을 만들지 않는 방법
네.
②에 대한 설명입니다.

ER 그림



룸 모형을 만들지 않아도 만들 수 있는 이유는routes로 설정할 수 있다.

절차.


users모델이 있는 전제로 씁니다.
$ rails g model Messages content:string user:references receive_user:references
Messages model 및 migrate 파일을 생성합니다.
완성된 것은 여기에 있다
_create_messages.rb
class CreateMessages < ActiveRecord::Migration[5.2]
  def change
    create_table :messages do |t|
      t.string :content
      t.references :user, foreign_key: true
      t.references :receive_user, foreign_key: { to_table: :users }

      t.timestamps
    end
  end
end
_create_messages.rb
{ to_table: :users }
라고 덧붙였다.
이거 없으면receiveusers표를 참조했기 때문에'그런 책상은 존재하지 않습니다'라고 말할 수 있습니다.
따라서 외부 키워드 참조users 테이블을 지정했습니다.
$ rails db:migrate
↑ 하다.

다음은 모델.


models/message.rb
class Message < ApplicationRecord
  belongs_to :user
  belongs_to :receive_user, class_name: 'User'
end
models/message.rb
class_name: User 
추가합니다.
이것에 따라receiveuser 콘서트존재하지 않는 반을 탐색하는 것을 방지하다.
models/user.rb
has_many :messages
has_many :sent_messages, through: :messages, source: :receive_user
has_many :reverses_of_message, class_name: 'Message', foreign_key: 'receive_user_id'
has_many :received_messages, through: :reverses_of_message, source: :user

def sent_messages(other_user, content) #メッセージを送るためのメソッド
    unless self == other_user
      self.messages.find_or_create_by(receive_user_id: other_user.id, content: content)
    end
end
이렇게 완성!
$railsc로 잘 할 수 있는지 확인하는 거 잊지 마세요.🙇‍♂️

보태다


수정 요청이 있으면 언제든지 말씀하세요.
참고 문장
https://aka-shin.com/techacademy-mentaring-09/

좋은 웹페이지 즐겨찾기