over 1 year ago

本周算是学习全栈营最为认真的一段时间,加入精进C群也是出于要认真学好全栈的目的而来的。第一周的作业就是复习招聘网站进行提取练习,这篇就来总结下本周的学习复盘。

拆解任务

编程对我来说真的算是门槛很高的一项技能,虽然自己在之前也有通过各种渠道学习过编程,但最终的成果每次都是放弃。拿到一个项目第一步要做的一定不是设计网站架构,更不能直接开始敲代码。

首先要将这个项目进行合理拆解,拆解成足够小,这样有助于后期进行项目管理。

招聘网站:这样一个项目如何进行拆解呢?

我是这样进行拆分的,整个项目分为四大部分:

  • 穿衣服(6-0)
  • 管理员部分(6-1 ~ 6-4)
  • 应征者部分(11-1 ~ 11-2)
  • 完善功能部分(8-2 、12-2)

这样分的好处我认为是可以清晰地把比较大的项目拆解成小的任务,对于新手掌握实作流程有一定的帮助;另外用这样的方式进行练习也能减轻做“提取练习”的压力,可以每次计划完成一个部分反复练熟再进行后一个部分,不至于每次想着要完成整个项目而造成较大的心理压力。


下面将每一部分的实作过程进行复盘,也算作是一次“提取练习”

1.穿衣服

6-0:

  • 安装Bootstrap套件(gem安装、设置navbar/footer/flash)
  • 安装Devise会员系统(gem安装、devise安装配置、dropdown配置、修改navbar中dropdown设置)
  • 安装simple_form好看易用的表格样式(gem安装、simple_form配置)
  • 建立welcome的 model & controller ( rails g 来建立 model 和 controller 、建立view页面、修改controller文件、测试flash)

2.管理员部分

6-1:

  • 建立 job 的model( title:string 和 description:text ) 和 controller
  • 配置 job 的路由(routes)
  • Job CRUD
  • Job View页面(index/new/show/edit/form{共用表单})
  • Job title 不能为空 ; 限制登录操作(:new/:create/:update/:edit/:destroy)

6-2:

  • 建立 admin::jobs 的controller
  • 配置 admin:jobs 的路由(routes){namespace}
  • Admin job CRUD
  • Admin job View页面(index/new/show/edit/adminform{共用表单})
  • navbar+下拉选单按钮AdminPanel、navbar+判断语句限制
  • 新增数据库 is_admin(将 is_admin 加入数据库rails g migration add...
  • 定义 admin?(model/user.rb def admin?)
  • 定义 require_is_admin(application_controller.rb def require_is_admin)
  • 新增 require_is_admin 到 controller(app/controllers/admin/jobs_controller.rb)

6-3:

  • 新增 more_detail_to_job 到数据库(rails g migration add...
  • 在表单中增加栏位 wage_lower_bound、wage_upper_bound、contact_email(_form.html.erb_adminform.html.erb
  • 添加白名单 :wage_lower_bound, :wage_upper_bound, :contact_email(jobs_controller.rbadmin/job_controller.rb
  • 薪资不能为空,薪资下限要大于0(validates... / numericality: { greater_than: 0 })

6-4:

  • 新增 is_hidden_to_job 到数据库(rails g migration add... add_column :jobs, :is_hidden, :boolean, default: true
  • 在表单中增加栏位 is_hidden(_form.html.erb_adminform.html.erb
  • 添加白名单 :is_hidden(jobs_controller.rbadmin/job_controller.rb
  • 隐藏文章首页应该看不到(jobs_controller.rb def index @job = Job.where(:is_hidden => false))
  • 定义 recent scope(models/job.rb scope :recent, -> {order("created_at DESC")})
  • 首页文章应该按照发布时间排序(jobs_controller.rb def index @job = Job.where(:is_hidden => false).recent)
  • 加入“Hidden”&"Public"修改管理员后台样子(jobs_helper.rb def render_job_status(job)/admin/jobs/index.html.erb + <%= render_job_status(job) %>)

3.应征者部分

11-1

  • 修改首页表单加入薪资上限、薪资下限(jobs/index.html.erb
  • 首页加入 排序 下拉选单(jobs/index.html.erb 参照教材手打HTML)
  • 修改 Job controller 实作排序功能(jobs_controller.rb def index @jobs = case[:order] | when 'by_lower_bound' | Job.published.order('wage_lower_bound DESC'))
  • 定义 published scope ('models/job.rb' scope :published, -> {where(is_hidden: false)})

11-2

  • 建立 投递简历 链接(views/jobs/show.html.erb 参照教材手打HTML)
  • 建立 resume model(job_id:integer user_id:integer content:text)
  • 建立 Resume 与 User/Job的关系(models/resume.rb belongs_to :user belongs_to:job / job.rb & user.rb has_many: resumes)
  • 建立 resumes controller,修改resume路由(routes),添加resume的地址(views/jobs/show.html.erb)
  • resume CRUD(new/create)
  • 新建 resume#new View页面
  • content不能为空(validates)
  • 加入简历上传功能(gem 'carriwave')
  • 新增 attachment 栏位到数据库(rails g migration add...
  • 配置 Attachment Uploader(rails g uploader attachment / models/resume.rb mount_uploader :attachment, AttachmentUploader)
  • 在表单中添加 attachment 栏位(resumes/new.html.erb
  • 添加白名单 :attachment('resumes_controller.rb')
  • 屏蔽使用者档案(.gitnore +public/uploads)

4.完善功能部分

8-2

  • 新建 admin.html.erb 页面(views/layouts/admin.html.erb 参照教材手打HTMl)
  • 在 admin controller 添加 layout (admin/jobs_controller.rb + layout "admin")
  • 把 Public & Hidden 换成图标(gem 'font-awesome-rails' / '配置application.scss' / 'job_helper.rb'替换"Pulic"和"Hidden" )
  • “被隐藏的工作”不能被查看到('jobs_controller.rb' def show + if @job.is_hidden)
  • 将 Public 和 Hide 设计成按钮(添加路由{post: publish/hide} / admin/jobs/index.html.erb添加按钮判断语句 / admin/jobs_controller.rb def publish 和 def hide / models/job.rb def publish! 和 def hide!)

12-2

  • 在 admin/jobs 列表加入薪资下限、上限、收到简历数量(admin/jobs/index.html.erb 参照教材手打HTML)
  • 管理员可以看到职缺里有谁投递简历(views/admin/jobs/index.html.erb +<%= link_to(job.resumes.count, ...) %> / 新建 admin::resumes controller / 修改路由(routes) / admin/resumes_controller.rb def index + @resumes = @job.resumes.recent)
  • 设计简历列表(新建resumes/index.html.erb / 新建 resumes/_resume.html.erb 参照教材手打HTML)
← ORID记录7/7 [学习笔记]让Github展示你的勤奋努力 →
 
comments powered by Disqus