add: update user_info

This commit is contained in:
vilet.yy 2021-05-31 18:39:49 +08:00 committed by viletyy
parent dc4c99c305
commit 86f0f2051d
7 changed files with 180 additions and 35 deletions

View File

@ -72,9 +72,13 @@ class UsersController < ApplicationController
end
def update
@user = User.find params[:id]
@user.update!(user_params)
render_ok
return render_not_found unless @user = User.find_by_id(params[:id]) || User.find_by(login: params[:id])
@user.attributes = user_params
if @user.save
render_ok
else
render_error(@user.errors.full_messages.join(", "))
end
end
def me
@ -274,11 +278,12 @@ class UsersController < ApplicationController
end
def user_params
params.require(:user).permit(:nickname, :lastname, :show_realname,:login,:mail,
params.require(:user).permit(:nickname,
user_extension_attributes: [
:gender, :location, :location_city,
:occupation, :technical_title,
:school_id, :department_id,:identity, :student_id, :description]
:school_id, :department_id, :province, :city,
:custom_department, :identity, :student_id, :description]
)
end

View File

@ -1,7 +1,7 @@
<!--
* @Date: 2021-03-01 10:35:21
* @LastEditors: viletyy
* @LastEditTime: 2021-05-28 16:04:04
* @LastEditTime: 2021-05-31 18:39:17
* @FilePath: /forgeplus/app/docs/slate/source/includes/_users.md
-->
# Users
@ -47,6 +47,57 @@ await octokit.request('GET /api/users/me.json')
Success Data.
</aside>
## 更改用户信息
更改用户信息
> 示例:
```shell
curl -X POST http://localhost:3000/api/users/yystopf.json
```
```javascript
await octokit.request('PATCH/PUT /api/users/:login.json')
```
### HTTP 请求
`PATCH/PUT /api/users/:login.json`
### 请求字段说明:
参数 | 类型 | 字段说明
--------- | ----------- | -----------
|user.nickname |string |用户昵称 |
|user.user_extension_attributes.gender |int |性别, 0男 1女 |
|user.user_extension_attributes.province |string |省份 |
|user.user_extension_attributes.city |string |城市 |
|user.user_extension_attributes.description |string |个性签名 |
|user.user_extension_attributes.custom_department|string |单位名称 |
> 请求的JSON示例
```json
{
"user": {
"nickname": "xxx",
"user_extension_attributes": {
"gender": 0,
"province": "湖南",
"city": "长沙",
"description": "个性签名",
"custom_department": "湖南智擎科技有限公司",
}
}
}
```
> 返回的JSON示例:
```json
{
"status": 0,
"message": "success"
}
```
## 获取用户星标项目
获取用户星标项目

View File

@ -181,7 +181,7 @@ class User < Owner
attr_accessor :password, :password_confirmation
delegate :gender, :department_id, :school_id, :location, :location_city, :technical_title, to: :user_extension, allow_nil: true
delegate :description, :gender, :department_id, :school_id, :location, :location_city, :technical_title, :province, :city, :custom_department, to: :user_extension, allow_nil: true
before_save :update_hashed_password
after_create do

View File

@ -22,9 +22,9 @@
# school_id :integer
# description :string(255) default("")
# department_id :integer
# honor :text(65535)
# edu_background :integer
# edu_entry_year :integer
# province :string(255)
# city :string(255)
# custom_department :string(255)
#
# Indexes
#

View File

@ -18,4 +18,9 @@ json.user_org_count @user_org_count
json.common_projects_count @projects_common_count
json.mirror_projects_count @projects_mirrior_count
json.sync_mirror_projects_count @projects_sync_mirrior_count
json.created_time format_time(@user.created_on)
json.created_time format_time(@user.created_on)
json.email @user.mail
json.province @user.province
json.city @user.city
json.custom_department @user.custom_department
json.description @user.description

View File

@ -0,0 +1,8 @@
class AddFieldsToUserExtensions < ActiveRecord::Migration[5.2]
def change
add_column :user_extensions, :province, :string # 省份
add_column :user_extensions, :city, :string # 城市
add_column :user_extensions, :custom_department, :string #自己填写的单位名称
remove_column :users, :description
end
end

View File

@ -331,6 +331,9 @@
<li>
<a href="#1ae74893b1" class="toc-h2 toc-link" data-title="获取当前登陆用户信息">获取当前登陆用户信息</a>
</li>
<li>
<a href="#c6da6881ac" class="toc-h2 toc-link" data-title="更改用户信息">更改用户信息</a>
</li>
<li>
<a href="#16a4666845" class="toc-h2 toc-link" data-title="获取用户星标项目">获取用户星标项目</a>
</li>
@ -611,7 +614,7 @@ Success — a happy kitten is an authenticated kitten!
<!--
* @Date: 2021-03-01 10:35:21
* @LastEditors: viletyy
* @LastEditTime: 2021-05-28 16:04:04
* @LastEditTime: 2021-05-31 18:39:17
* @FilePath: /forgeplus/app/docs/slate/source/includes/_users.md
-->
<h1 id='users'>Users</h1><h2 id='1ae74893b1'>获取当前登陆用户信息</h2>
@ -673,7 +676,80 @@ Success — a happy kitten is an authenticated kitten!
<aside class="success">
Success Data.
</aside>
<h2 id='16a4666845'>获取用户星标项目</h2>
<h2 id='c6da6881ac'>更改用户信息</h2>
<p>更改用户信息</p>
<blockquote>
<p>示例:</p>
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> POST http://localhost:3000/api/users/yystopf.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">PATCH/PUT /api/users/:login.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-2'>HTTP 请求</h3>
<p><code>PATCH/PUT /api/users/:login.json</code></p>
<h3 id='aa883f5d52'>请求字段说明:</h3>
<table><thead>
<tr>
<th>参数</th>
<th>类型</th>
<th>字段说明</th>
</tr>
</thead><tbody>
<tr>
<td>user.nickname</td>
<td>string</td>
<td>用户昵称</td>
</tr>
<tr>
<td>user.user_extension_attributes.gender</td>
<td>int</td>
<td>性别, 0男 1女</td>
</tr>
<tr>
<td>user.user_extension_attributes.province</td>
<td>string</td>
<td>省份</td>
</tr>
<tr>
<td>user.user_extension_attributes.city</td>
<td>string</td>
<td>城市</td>
</tr>
<tr>
<td>user.user_extension_attributes.description</td>
<td>string</td>
<td>个性签名</td>
</tr>
<tr>
<td>user.user_extension_attributes.custom_department</td>
<td>string</td>
<td>单位名称</td>
</tr>
</tbody></table>
<blockquote>
<p>请求的JSON示例</p>
</blockquote>
<div class="highlight"><pre class="highlight json tab-json"><code><span class="p">{</span><span class="w">
</span><span class="nl">"user"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nl">"nickname"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xxx"</span><span class="p">,</span><span class="w">
</span><span class="nl">"user_extension_attributes"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nl">"gender"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
</span><span class="nl">"province"</span><span class="p">:</span><span class="w"> </span><span class="s2">"湖南"</span><span class="p">,</span><span class="w">
</span><span class="nl">"city"</span><span class="p">:</span><span class="w"> </span><span class="s2">"长沙"</span><span class="p">,</span><span class="w">
</span><span class="nl">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"个性签名"</span><span class="p">,</span><span class="w">
</span><span class="nl">"custom_department"</span><span class="p">:</span><span class="w"> </span><span class="s2">"湖南智擎科技有限公司"</span><span class="p">,</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div>
<blockquote>
<p>返回的JSON示例:</p>
</blockquote>
<div class="highlight"><pre class="highlight json tab-json"><code><span class="p">{</span><span class="w">
</span><span class="nl">"status"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
</span><span class="nl">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"success"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div><h2 id='16a4666845'>获取用户星标项目</h2>
<p>获取用户星标项目</p>
<blockquote>
@ -681,7 +757,7 @@ Success — a happy kitten is an authenticated kitten!
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET http://localhost:3000/api/users/yystopf/is_pinned_projects.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/users/:login/is_pinned_projects.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-2'>HTTP 请求</h3>
</code></pre></div><h3 id='http-3'>HTTP 请求</h3>
<p><code>GET api/users/:login/is_pinned_projects.json</code></p>
<h3 id='7447e4874e-2'>返回字段说明:</h3>
<table><thead>
@ -863,9 +939,9 @@ Success — a happy kitten is an authenticated kitten!
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> POST http://localhost:3000/api/users/yystopf/is_pinned_projects/pin.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/users/:login/is_pinned_projects/pin.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-3'>HTTP 请求</h3>
</code></pre></div><h3 id='http-4'>HTTP 请求</h3>
<p><code>POST /api/users/:login/is_pinned_projects/pin.json</code></p>
<h3 id='aa883f5d52'>请求字段说明:</h3><h4 id='0ca7f0efb8'>同时设定多个星标项目</h4>
<h3 id='aa883f5d52-2'>请求字段说明:</h3><h4 id='0ca7f0efb8'>同时设定多个星标项目</h4>
<table><thead>
<tr>
<th>参数</th>
@ -909,7 +985,7 @@ Success — a happy kitten is an authenticated kitten!
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET http://localhost:3000/api/users/yystopf/statistics/activity.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/users/:login/statistics/activity.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-4'>HTTP 请求</h3>
</code></pre></div><h3 id='http-5'>HTTP 请求</h3>
<p><code>GET /api/users/:login/statistics/activity.json</code></p>
<h3 id='7447e4874e-3'>返回字段说明:</h3>
<table><thead>
@ -998,9 +1074,9 @@ Success — a happy kitten is an authenticated kitten!
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET http://localhost:3000/api/users/yystopf/headmaps.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/users/:login/headmaps.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-5'>HTTP 请求</h3>
</code></pre></div><h3 id='http-6'>HTTP 请求</h3>
<p><code>GET api/users/:login/headmaps.json</code></p>
<h3 id='aa883f5d52-2'>请求字段说明:</h3>
<h3 id='aa883f5d52-3'>请求字段说明:</h3>
<table><thead>
<tr>
<th>参数</th>
@ -1143,9 +1219,9 @@ Success — a happy kitten is an authenticated kitten!
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET http://localhost:3000/api/users/yystopf/project_trends.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/users/:login/project_trends.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-6'>HTTP 请求</h3>
</code></pre></div><h3 id='http-7'>HTTP 请求</h3>
<p><code>GET api/users/:login/project_trends.json</code></p>
<h3 id='aa883f5d52-3'>请求字段说明:</h3>
<h3 id='aa883f5d52-4'>请求字段说明:</h3>
<table><thead>
<tr>
<th>参数</th>
@ -1460,9 +1536,9 @@ Success — a happy kitten is an authenticated kitten!
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET http://localhost:3000/api/users/yystopf/statistics/develop.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/users/:login/statistics/develop.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-7'>HTTP 请求</h3>
</code></pre></div><h3 id='http-8'>HTTP 请求</h3>
<p><code>GET /api/users/:login/statistics/develop.json</code></p>
<h3 id='aa883f5d52-4'>请求字段说明:</h3>
<h3 id='aa883f5d52-5'>请求字段说明:</h3>
<table><thead>
<tr>
<th>参数</th>
@ -1603,9 +1679,9 @@ Success — a happy kitten is an authenticated kitten!
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET http://localhost:3000/api/users/yystopf/statistics/role.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/users/:login/statistics/role.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-8'>HTTP 请求</h3>
</code></pre></div><h3 id='http-9'>HTTP 请求</h3>
<p><code>GET /api/users/:login/statistics/role.json</code></p>
<h3 id='aa883f5d52-5'>请求字段说明:</h3>
<h3 id='aa883f5d52-6'>请求字段说明:</h3>
<table><thead>
<tr>
<th>参数</th>
@ -1685,9 +1761,9 @@ Success — a happy kitten is an authenticated kitten!
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET http://localhost:3000/api/users/yystopf/statistics/major.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/users/:login/statistics/major.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-9'>HTTP 请求</h3>
</code></pre></div><h3 id='http-10'>HTTP 请求</h3>
<p><code>GET /api/users/:login/statistics/major.json</code></p>
<h3 id='aa883f5d52-6'>请求字段说明:</h3>
<h3 id='aa883f5d52-7'>请求字段说明:</h3>
<table><thead>
<tr>
<th>参数</th>
@ -1746,9 +1822,9 @@ Success — a happy kitten is an authenticated kitten!
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET http://localhost:3000/api/users/yystopf/applied_messages.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/users/:login/applied_messages.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-10'>HTTP 请求</h3>
</code></pre></div><h3 id='http-11'>HTTP 请求</h3>
<p><code>GET /api/users/:login/applied_messages.json</code></p>
<h3 id='aa883f5d52-7'>请求字段说明:</h3>
<h3 id='aa883f5d52-8'>请求字段说明:</h3>
<table><thead>
<tr>
<th>参数</th>
@ -1983,9 +2059,9 @@ Success — a happy kitten is an authenticated kitten!
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET http://localhost:3000/api/users/yystopf/applied_transfer_projects.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/users/:login/applied_transfer_projects.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-11'>HTTP 请求</h3>
</code></pre></div><h3 id='http-12'>HTTP 请求</h3>
<p><code>GET /api/users/:login/applied_transfer_projects.json</code></p>
<h3 id='aa883f5d52-8'>请求字段说明:</h3>
<h3 id='aa883f5d52-9'>请求字段说明:</h3>
<table><thead>
<tr>
<th>参数</th>
@ -2175,9 +2251,9 @@ Success — a happy kitten is an authenticated kitten!
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> POST http://localhost:3000/api/users/yystopf/applied_transfer_projects/2/accept.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/users/:login/applied_transfer_projects/:id/accept.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-12'>HTTP 请求</h3>
</code></pre></div><h3 id='http-13'>HTTP 请求</h3>
<p><code>GET /api/users/:login/applied_transfer_projects/:id/accept.json</code></p>
<h3 id='aa883f5d52-9'>请求字段说明:</h3>
<h3 id='aa883f5d52-10'>请求字段说明:</h3>
<table><thead>
<tr>
<th>参数</th>
@ -2366,9 +2442,9 @@ Success — a happy kitten is an authenticated kitten!
</blockquote>
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> POST http://localhost:3000/api/users/yystopf/applied_transfer_projects/2/refuse.json
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/users/:login/applied_transfer_projects/:id/refuse.json</span><span class="dl">'</span><span class="p">)</span>
</code></pre></div><h3 id='http-13'>HTTP 请求</h3>
</code></pre></div><h3 id='http-14'>HTTP 请求</h3>
<p><code>GET /api/users/:login/applied_transfer_projects/:id/refuse.json</code></p>
<h3 id='aa883f5d52-10'>请求字段说明:</h3>
<h3 id='aa883f5d52-11'>请求字段说明:</h3>
<table><thead>
<tr>
<th>参数</th>