Depot 电商应用程序开发
- rails基本框架为MVC框架,关系为
URL =>router =>controller
|| || ||
= = = = = = view model = db
- 练习rails进行开发,在做电商页面时,我们需要做出来供给卖家管理产品的页面以及卖家展示页面,首先我们要先有产品,第一步是创建商品维护程序,可以用来添加产品
创建商品维护程序
- Rails new depot
- Rails generate scaffold Product title:string description:text image_url:string price:decimal
为product表创建模型model、视图view、控制器controller、迁移migrate。上述都是通过脚手架(scaffold)生成的
- 应用迁移
通过rake db:migrate可以对数据库进行迁移,从而达到更新、撤销数据库的目的
- 小结
通过上面的步骤,我们初步生成了产品(Product)的展示(show)、添加(new)页面,以及展示、添加、编辑(edit)、删除(destroy)的路径,还有一个存放产品数据的表(table),里面存放着title、description、image_url和price的数据
验证和单元测试
- 我们发现在添加产品的时候,即使没有添加标题(title)或者描述(description)等等,也可以添加产品,然而这是不允许的,所以我们需要添加验证,验证最合适的地方就是在model层(与数据层进行交互)
- 需要验证的地方:字段不为空,价格有最小数字,标题是唯一的,图像的路径后缀要匹配,这些地方都需要在 /app/model/products.rb里添加以下变量
class Product < ActiveRecord::Base
validates :title, :description, :image_url, presence: true
validates :price, numericality: {greater_than_or_equal_to: 0.01}
#
validates :title, uniqueness: true
validates :image_url, allow_blank: true, format: {
with: %r{\.(gif|jpg|png)\Z}i,
message: 'must be a URL for GIF, JPG or PNG image.'
}
end
- 验证添加完后我们需要对我们的验证条件进行测试了,测试也分为三种,在test/文件夹里面,其中controllers是每一个动作的有效性,例如new, get index, create, edit,destroy等等,而models是测试单元的有效性,例如表单里面的字段不为空是否正确,价格最小数字,标题唯一等等,两者都需要给出有效的数据作为测试数据,最后一种是静态测试(fixtrue),通过添加静态数据,静态测试会用到其中的测试数据库来测试
- 有用到检测测试的命令 rake test, rake test::units
网友评论