项目需求
公司内部的简易邮件系统——站内信,基本的增删改查,一对一发送,群发,信息查看状态、
数据库设计
站内信的 “群发” 可覆盖 “一对一发送” ,如下定义
letter_text has_many :letters
letter(站内信)
| 字段 | 数据类型 | 默认值 | 备注 |
|---|---|---|---|
| id | integer | ||
| send_id | integer | 发送者(user) | |
| rec_id | integer | 接受者(user) | |
| text_see | string | 未查看 | 查看状态 |
| letter_text_id | integer | 外键(letter_text) |
letter_text(消息内容)
| 字段 | 数据类型 | 默认值 | 备注 |
|---|---|---|---|
| id | integer | ||
| title | string | 标题 | |
| text | text | (不为空) | 聊天内容 |
| send_time | time | 发送时间 | 发送时间 |
站内信项目的增删改查
基础建设
ruby -v
#=> ruby 2.3.1
rails -v
#=> rails 5.1.4
rails new letter
cd letter
git init
git add .
git commit -m "first commit"
git checkout -b ch01
省略前端套用、 User 表等基础建设
Routes
config/routes.rb
Rails.application.routes.draw do
root 'letters#index'
resources :users
resources :letters
resources :letter_texts
end
Model
文件 app/models/letter.rb 代码如下
class Letter < ApplicationRecord
belongs_to :letter_text
belongs_to :sender, class_name: "User", foreign_key: "send_id"
belongs_to :recer, class_name: "User", foreign_key: "rec_id"
end
文件 app/models/letter_text.rb 代码如下
class LetterText < ApplicationRecord
has_many :letters
end
Controller
文件 app/controllers/letters_controller.rb 代码如下
class LettersController < ApplicationController
def index
@letters = Letter.all
end
def show
@letter = Letter.find(params[:id])
end
def destroy
@letter =

本文介绍了如何构建一个内部站内信系统,包括项目需求、数据库设计和增删改查功能。通过一对一群发功能的设计,展示了如何在Rails中进行路由配置、模型创建、控制器操作和视图展示。同时,文章提出将繁琐的控制器代码简化,将其移到模型层。
最低0.47元/天 解锁文章
9687

被折叠的 条评论
为什么被折叠?



