each_with_index?
li.save
你这种需求用 Nodejs 或 Eventmachie/Thin 就比较好实现。 有耗时任务直接新建一个异步的 timer,既不消耗多余的内存,又不影响当前进程,缺点是未执行的任务在重启服务器的时候会丢失,还得去考虑一些持久化的事情。
rake db:drop rake db:create rake db:schema:load
自己写了一个序列化/反序列化 AR 对象的方法,没有这个问题了,并且速度有提升。。 最重要的是不会把关联缓存/dirty 属性等存到缓存里。 https://gist.github.com/3447628
难道大家不觉得用正则在页面里匹配 render 方法和在注释里声明依赖这种做法很恶心?
呵呵 呵呵
#3 楼 @zealinux @kenshin54 说的是这个意思:
ActiveRecord::Base.set_inheritance_column "tttype"
或者只在某个 Model 上使用:
User.set_inheritance_column "tttype"
不喜欢 cloudfoundry 的最重要原因就是这个域名我记不住,每次都拼错。
收师弟了小说还怎么往下写啊
#8 楼 @fire9 因为 @ShiningRay 同学走了?
#5 楼 @whatisruby 方向问题就得看文档了。。。
#5 楼 @whatisruby 拿最简单的 one-one 来举例子吧: User has_one Account Account belongs_to User 在未设置:inverse_of 的情况下:
u = User.first
[2] pry(main)> account = u.account
Account Load (0.5ms) SELECT `accounts`.* FROM `accounts` WHERE `accounts`.`id` = 2 LIMIT 1
[3] pry(main)> account.user
User Load (0.6ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 3 LIMIT 1
设置了 inverse_of 以后:
class User < ActiveRecord::Base
has_one :account, :inverse_of => :user
end
[1] pry(main)> u = User.first
User Load (0.3ms) SELECT `users`.* FROM `users` LIMIT 1
[2] pry(main)> account = u.account
Account Load (0.1ms) SELECT `accounts`.* FROM `accounts` WHERE `accounts`.`user_id` = 3 LIMIT 1
[3] pry(main)> account.user # No SQL Query
其中,把 user.accout 这一方法看成函数就是 account(a_user) -> a_account 对应的反函数是 user(a_account) 一定返回 a_user
第二弹
#3 楼 @whatisruby 我没用过 mongoid。。不过这东西应该和 AR 里的类似:
假设 f(x) -> y,那么 f(x) 的反函数是 g(y) inverse_of 的作用是在你第一次运行 f(x) 并得到结果 y 的时候,就把反函数 g(y)-> x 的结果缓存起来了。
开启了 IdentityMap 吧?