@fredwu 869 行的测试呢。。。。占总代码数的 42%.........
@fredwu 测试完了,给 bug 报告哈。。。。
@ashchan 要不我怕我自己记不住。。。。。。。。。。。。。
刚刚优化了下 first_or_initialize, first_or_create 的功能。。。
我们在建一个对象的时候经常性的会有这种问题,例如:
根据邮箱查询一个用户,如果查到的话就找出来,如果没有查到就创建他,并且把本次请求的 IP 记录下来
这是个经常性我写起来感觉很恶心的地方,用 Rails 也要这样子写:
user = User.where(email: '[email protected]').first_or_create
if user.from_ip.blank?
user.update_attribute(:from_ip, "111.111.111.111") // 会有3条SQL, 查询,创建,更新
end
并且还不太贴合要求,最贴合要求的实现应该是
user = User.where(email: '[email protected]').first_or_initialize
if user.new_record?
user.from_ip = "111.111.111.111"
user.save
end
经过我的改进版的 gorm 后,可以这样子写了:
db.Where(User{Email: "[email protected]"}).Attrs(User{FromIp: "111.111.111.111"}).FirstOrCreate(&User{})
感觉用起来帅多了。。。
刚刚加上了类似 rails first_or_initialize, first_or_create 的功能,用起来更爽啦:)
其实我想表达的是
你从来不出门和妹子打招呼,难道让妹子来和你打招呼啊。。。。
即使被动型,起码也要往有妹子的地方钻才有妹子啊。。。。。。
有没有女朋友和你是程序员有什么关系。。。。。。。。。。。。
我的家乡有个古老的传说,谁家的孩子找不到媳妇,去服装厂干几个月就找到了。。。。
@hxtheone 多少年前就支持字母了。。。。只是之前不是首选项,为了让你可以通过字母来搜索链接
不过现在的话,如果你写大写字母的话,还是可以搜索链接的(支持拼音哦)。。。
我感觉这个功能挺高端,大气,上档次的。。。。。XD
并且为了充分照顾到了你看动作片网站,还特有 image_only 模式,让你可以只看图,image_toggle 可以让你关掉图片,专注的看小说。。。。。
@terrywang 用了多年 arch .... 习惯了,感觉 apt 各种不好用。。。。不过鉴于 arch 开发者的不负责的更新。。。。才换到 ubuntu
@5long 嗯,看起来还不错。。。不过还是纯 shell 更 happy...无依赖... 主要是因为是我自己定制的。。。。XD
@terrywang 经过高端,大气的 shelll 包装 , 小伙伴们用 apt 也可以很 happy...
function sp {
if [ -f '/usr/bin/yaourt' ];then
sudo yaourt $@
elif [ -f '/usr/bin/pacman' ]; then
sudo pacman $@
elif [ -f '/usr/bin/apt-get' ]; then
if [ "$1" = "-Ss" ]; then
if [ -f '/usr/bin/aptitude' ]; then
aptitude search $(echo $@ | sed 's/-Ss\?\s*//')
else
apt-cache search $(echo $@ | sed 's/-Ss\?\s*//')
fi
elif [ "$1" = "-Qs" ]; then
apt-cache search -installed $(echo $@ | sed 's/-Qs\?\s*//')
elif [ "$1" = "-S" ]; then
sudo apt-get install $(echo $@ | sed 's/-S\?\s*//')
elif [ "$1" = "-Suy" ]; then
sudo apt-get update
sudo apt-get dist-upgrade
elif [ "$1" = "-Su" ]; then
sudo aptitude update
elif [ "$1" = "-Rsn" ]; then
sudo apt-get remove $(echo $@ | sed 's/-Rsn\?\s*//')
elif [ "$1" = "-Qi" ]; then
apt-cache show $(echo $@ | sed 's/-Qi\?\s*//')
elif [ "$1" = "-Ql" ]; then
dpkg -L $(echo $@ | sed 's/-Ql\?\s*//')
elif [ "$1" = "-Qo" ]; then
dpkg -S $(echo $@ | sed 's/-Qo\?\s*//')
elif [ "$1" = "-Qp" ]; then
keyword=$(echo $@ | sed 's/-Qp\?\s*//')
apt-cache pkgnames | sort | xargs apt-cache policy | awk '/^[^ ]/ { split($1, a, ":"); pkg = a[1]; installed="[i] ";}
/Installed/ {version=$2;if (match(version,/none/)){installed="[n] ";version=""}}
/Candidate/ {if (version=="") { version=$2 } else if (version!=$2) {version="* "$2} }
/Packages/ {printf("%s%-40s %-50s %s %s\n", installed, pkg, $2, $3, version)}' |grep $keyword
else
if [ -f '/usr/bin/aptitude' ]; then
sudo aptitude $@
else
sudo apt-get $@
fi
fi
fi
}
用的 3.1 测试的 @Victor
@Victor 可能是版本原因,在我这里是 ...
SELECT users
.* FROM users
WHERE users
.id
IN (2, 3)
User.where(:id => [1,2]).where(:id => [2,3])
猜猜结果是啥。。。
@metal 感谢建议... XD
已收录...谢谢!
嗯,算是变相赞助旅游吧...
@Zernel 好的,我们先测试下整个流程.... XD
@fresh_fish 必须说是好老板啊,要不怎么会有下一次机会呢.... XD
流程差不多下面这样,流程上和 cancan 没有啥关系。。。
class Order
def 只允许用户A
self.当前操作用户 == 用户A
end
event :物品准备打包 do
transitions :to => :物品准备打包, :from => [:受理订单], :guard => :只允许用户A
end
end
难道你不记录订单的状态变化么?如果记录的话,
你要记录从”受理订单“ -> “物品准备打包”是由谁批准的吧?
如果你知道是谁批准的了,在 state_machine 加个校验不是分分钟的事么