作者hellolucky (做自己 好自在)
看板Ruby
标题Re: [问题] 如何在新增时候自动带出相关资讯
时间Fri Oct 29 19:42:38 2010
※ 引述《yanggary (羊小排)》之铭言:
: ※ 引述《hellolucky (做自己 好自在)》之铭言:
: : new controller => new view => create controller => before_validation
: : 你的before_validation在new的view後面
: : 所以当然在new的view看不到编号
: : 因为你是用before_validation
: : 在create和update都会触发
: : 假如是用before_create就可以避免在update的时候+1
: : Ruby on Rails在ActiveRecord建立资料表的时候
: : 只要在migration加上timestamps就会自动建立created_at和updated_at两个栏位
: : 要捞建立时间就抓created_at
: : 要捞最後修改时间就抓updated_at
: 我现在就是抓timestamps的created_at的栏位,现在显示的格式会带时间
: 如果不要时间,比如我需要的格式是2010-10-29,是不是在後面直接加上
: (%Y-%m-%d)这样的输出格式
: : 我不知道你的单号需不需要连续
: : 如果不需要连续 建议可以使用年+id的组合避免重复
: : 使用after_create
: : 再在里面处理formnumber
: : 最後在save一次
: 我单号需要连续我是抓现在的[年份+0001.......]的序号,所以到明年就变成
: [2011+0001]
: : 另外日期处理不用这麽复杂 可以去查一下ruby时间的处理方式
: : 希望对你有帮助^^
: 这日期部份我在菸酒菸酒(研究研究)
: 此外在new的时候会有问题?会有怎样的问题,可否提供建议,谢谢!!
假设今天有两个使用者a和b 同时使用这个系统新增订单
a进入新增页面编辑 => b进入新增页面编辑
现在订单数从20100001开始
formnumber该怎麽抓?两个都得到20100001?
诸如此类订单重复的问题
解法大概就是多设一个counter去计算现在的编号
new的时候去跟counter要号码 counter + 1
可能需要用transaction去处理这件事
避免同时动作而得到同样的订单编号
ex: 有a和b两个使用者
a => 要号0001 => b要号0001 => a把counter+1 => b把counter+1 => counter=0003
诸如此类的问题
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.34.160.41