Demo 地址:http://rails5-b2c.eggman.tv/
源码地址:https://github.com/eggmantv/master_rails_by_actions
这个项目离真正的线上使用还差得远,毕竟只是技术目的的教学使用,如果有哪位朋友想把它真的做到线上使用的程度的话,欢迎联系我,对于我来说精力可能不够了
该项目主要是我们自己开发的用于教学目的一个开源项目,项目基于 Rails 5,实现的功能就是传统的 B2C 电商平台中常用的功能,包括:
项目使用技术:
前台框架:
涉及到的主要 Gem:
适用对象:
Demo: http://rails5-b2c.eggman.tv/
后台管理账号:[email protected]/a5zktij5 http://rails5-b2c.eggman.tv/admin
请大家不要修改密码,谢谢!
嗯,多谢了
这个项目离真正的线上使用还差得远,毕竟只是技术目的的教学使用,如果有哪位朋友想把它真的做到线上使用的程度的话,欢迎联系我,对于我来说精力可能不够了
建议不要以真正上线为目标,工作量太大了,Magento 几百 MB 的代码还有无数的插件及主题资源是一个小团队短期内无论如何都比不上的。
在线商城,用现成的就好了,这不是个小轮子。
我当初给 KnewOne 做电商的时候,差不多的体验和功能,模型 1000 来行,前端算上可能差不多 2000 行的样子吧。。。写了一个月不到,特化需求不是很难做的,主要是做成生产级系统要考虑很多边界情况(比如最常见的超售,和微信支付、支付宝之类对接的各种情况),一个是可能小难,或是太业务导向违背了教学的目的。
比如下面 payment 里面这段代码
def self.create_from_orders! user, *orders
orders.flatten!
payment = nil
transaction do
payment = user.payments.create!(
total_money: orders.sum(&:total_money)
)
orders.each do |order|
if order.is_paid?
raise "order #{order.order_no} has already paid"
end
order.payment = payment
order.save!
end
end
既没有看到使用悲观锁,订单上也没有创建乐观锁,方法内也并没有分布式锁做排他调用保证
create_table "orders", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.integer "user_id"
t.integer "product_id"
t.integer "address_id"
t.string "order_no"
t.integer "amount"
t.decimal "total_money", precision: 10, scale: 2
t.datetime "payment_at"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "payment_id"
t.string "status", default: "initial"
t.index ["order_no"], name: "index_orders_on_order_no", unique: true, using: :btree
t.index ["payment_id"], name: "index_orders_on_payment_id", using: :btree
t.index ["user_id"], name: "index_orders_on_user_id", using: :btree
end
确实比较坑,最近用户有个需求,要快速的弄个简易版的商城,然后我就看中这个了。感觉楼主对 web 开发有一定经验,但是对 rails 使用应该时间并不是很长。常用的 gem 没有用到。刚刚还遇到一个很极低的错误,引入的 js 放在 body 最下边。而不是 head 里边。导致我调用 jquery 所有的东西都出错。这个问题太不应该了,绕了个大湾。
如果用 rails 自带的 turbolinks 是需要把 javascript tag 放在 head 里面的,如果不用 turbolinks,我也喜欢放底部,少套一层 domready 回调。
当然不是必须放 head 里边,放在最后的话,在页面里写的 js 调用 jquery 怎么掉用呢。先执行页面中的 js,在加载 jquery。肯定会暴错,我说的问题是在这里。加载顺序问题。
问题是有关注没看到更新啊老板...多发是因为你没回应啊......不然你 hightlight 一下这月更新的内容?我最后看到的是 Ruby 的大师之路 GC 优化 2017 年 6 月 6 日 更新,然后我 7/16 问完问题,很恰巧的在 7/18 就更新完结...也请你多关注一下问题吧,毕竟是付费订阅的,收钱的老板,三天才回应。..加油好吗?