begin;
insert into money_records(account_id, money) values(123, 100); # 1
select * from accounts where id=123 for update; # 2
select sum(money) from money_records where account_id=123; #3
update accounts set balance=200 where id=123; # 4
commit;
因为用了 after_save 所以 insert 语句是在锁 account 之前执行的,应该先锁 account 再去插入 money_record,即 #1 和 #2 顺序颠倒一下。而且#3 也是不需要的,锁住 account 的情况下,直接 blance+money 就够了
用 whenever + linux crontab 还会有以下问题:
后来选用了sidetiq
🔝
坐等收货
http://toutiao.welian.com/toutiao/detail/1881
公司刚刚举办了新品发布会
自己顶一下
@jasl 发票会邮寄过来吗?
+1
C 轮和 D 轮公司,相比大公司来说舞台更大,和小公司相比我们更正规,合理的开发流程,同事都很 nice
可以看下反向代理的日志,比如 nginx 日志,默认配置会记录请求的 agent。阿里云盾的请求会有类似 Alibaba.Security.Heimdall
的关键字
公司很有前景,D 轮融资即将到位
#12 楼 @xiaohesong 有空来玩啊
#10 楼 @numbcoder 哪家公司啊
好好看 API 文档
曾经我也在南京,后来转战杭州。题主愿意的话可以来我司面试。 [email protected] 杭州大搜车 https://ruby-china.org/topics/27440
rubyMine 的功能
有没有办法不传入 binding
反对过度元编程,会把代码弄得不易读。 特别是对于 IDE 党,很多方法不能直接定位点击进入。 项目比较大的时候,改个东西都很难找,比如使用 send 调用方法,方法名是拼接出来的。
注册 ID:fanxiaopeng
11 点睡觉,8 点起床 😄
我是来拿书的
好书同求!
模版中存值
link_to '首页', root_path, id: 'your_id', data: {params: @order_params}
javascript 中取值
var orderParams = $('#your_id').data('params');
优点:
缺点:
rails 有 API 可以使用,String#titleize
'man from the boondocks'.titleize # => "Man From The Boondocks"
'x-men: the last stand'.titleize # => "X Men: The Last Stand"
'TheManWithoutAPast'.titleize # => "The Man Without A Past"
'raiders_of_the_lost_ark'.titleize # => "Raiders Of The Lost Ark"
# File activesupport/lib/active_support/inflector/methods.rb, line 154
def titleize(word)
humanize(underscore(word)).gsub(/\b(?<!['’`])[a-z]/) { $&.capitalize }
end
后台的功能一般是以 CRUD 为基础的,rails 脚手架基本上可以满足需求。对于更好的样式,以及如何方便的修改功能,可以更改脚手架的模版,第一次把模版定制好,后面生成的代码都是以模版为基础的,在根据不同的业务需求做改动代码,比较节省时间,学习成本也比较低