记录11月1日第一次参与后台管理项目过程中,环境配置的排错,任务/需求的实现等过
www项目是普通用户的前端页面,cms项目是帮助文档及用户社区,base-api项目是给www提供API
那么后台管理就是网站管理员用户使用的,同时所有数据库的迁移都在里面,
可以在后台管理里给cms发布或修改新文章,也可以修改www项目的首页轮播图等
后台管理是这几个项目中最复杂的,提交次数也是最多的
.ruby-version记录了rvm设置的local_directory_ruby_version
Gemfile.lock文件的最后一行记录了
开发服务器的配置只需要三个yml Application,secret,database
修改 REDIS_URL 填上正确的redis地址
执行数据库migrate之后才能启动rails服务器
查看所有数据库的编码:
SELECT schema_name,default_character_set_name FROM information_schema.SCHEMATA;
创建一个utf8的数据库
~~CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;~~~
!> 必须用rake db:create保证数据库是utf-8
必要字段: email,password,role_id,is_otp_binded
role_id=1说明是超级管理员, is_otp_binded=0表示登录不需要谷歌验证码
Manager.create(email: "[email protected]", password: "adsfgh", role_id: 1, is_otp_binded: 0)
Manager.find_by_email("[email protected]")
Manager.find_by_email("[email protected]").update(phone: 13241234123)
OR
a = Manager.find(18)
a.password = "ffffjjjj"
a.save!
Manager.find(16).destroy
find . -name "members"
./app/views/private/members
显然这只是个views,不过通过views内按Ctrl+c跳转到controller的定义处
经过分析发现只需要修改show页面(详情页面)的数据显示,很简单
通过manager表可知上次登录时间的字段是 last_sign_in_at
于是就想到在多个表中搜索这个字段
SELECT DISTINCT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name LIKE 'employee%'
AND TABLE_SCHEMA='YourDatabase'
SELECT * FROM information_schema.columns WHERE column_name = 'column_name';
--OR
机器人具体是什么先不用管,先把任务的页面及数据库原型图做好
首先通过grep命令找下顶部菜单栏在哪一个view里面
grep 随便一个下拉菜单子项 . -r
./app/views/shared/_customer_service_menu.html.erb: <span>随便一个下拉菜单子项</span>
./config/locales/zh.yml: digital_urrency_transaction: 随便一个下拉菜单子项
第一个查询结果是在views中下划线开头的 partials 文件
第二个查询结果是的文件位置也很重要,以后添加国际化俄语支持需要
进去文件后发现菜单的选项特别少,根据文件名customer_service_menu可知这个应该是普通用户专用的菜单
那就顺藤摸瓜往下找应该能找到管理员专用的页面
validates :interval_of_hook, length: { in: 1..60 }
validates :interval_of_sleep, length: { in: 1..60 }
validates :status, inclusion: { in: %w(ok error),
message: "status must be ok or error" }
解决方案: 给controller外面包一层
关于robot数据验证的逻辑我放在这篇文章中介绍rails数据验证
不加raw的话 没有转义html的br标签:
后记:后来通过Unicode调用font-awesome图表时,就必须通过raw把 &#x开头的Unicode转为html
像input标签的的文本藏在value属性里,只能通过unicode的办法显示图表