其实很明了了,AR 不支持更改 id,因为 id 的定义就是永远不改变的字段。
像订单号这样的数据应该另开一个字段,因为人工定义的字段没什么是不变的,身份证号就变过一次。
我不知道了,一个个 gem 去掉看看。
#23 楼 @woody1983 update_column 的意思就是脱离 AR 掌控更新一个字段
def update(attribute_names = @attributes.keys)
attributes_with_values = arel_attributes_values(false, false, attribute_names)
return 0 if attributes_with_values.empty?
klass = self.class
stmt = klass.unscoped.where(klass.arel_table[klass.primary_key].eq(id)).arel.compile_update(attributes_with_values)
klass.connection.update stmt
end
def arel_attributes_values(include_primary_key = true, include_readonly_attributes = true, attribute_names = @attributes.keys)
...
AR 特地吧 primary_key 排除了,就是不建议更新。一定要更新的话用 SQL 吧。
def find_one(id)
id = id.id if ActiveRecord::Base === id
if IdentityMap.enabled? && where_values.blank? &&
limit_value.blank? && order_values.blank? &&
includes_values.blank? && preload_values.blank? &&
readonly_value.nil? && joins_values.blank? &&
!@klass.locking_enabled? &&
record = IdentityMap.get(@klass, id)
return record
end
column = columns_hash[primary_key]
substitute = connection.substitute_at(column, @bind_values.length)
relation = where(table[primary_key].eq(substitute))
relation.bind_values = [[column, id]]
record = relation.first
unless record
conditions = arel.where_sql
conditions = " [#{conditions}]" if conditions
raise RecordNotFound, "Couldn't find #{@klass.name} with #{primary_key}=#{id}#{conditions}"
end
record
end
如果 IdentityMap 没开应该没缓存啊。
装了什么插件吗?
有缓存
update: 我查查先
看日志,把响应时间长的过滤出来。
#11 楼 @shiren1118 我也看不懂 devise
我看书的时候,如果发现能看得很快,就觉得这本书里没讲什么我不知道的东西。
这是 patch?可以回馈给上游啊。
老师比较喜欢 1
我已经在做自己的项目了,所以没有时间参与。挺期待这个服务上线。
bundle install 呢?
现在希望用系统 ruby 还是 rvm?把 PATH 输出看一下 echo $PATH
多人开发就是 gem 版本完全对着 Gemfile.lock,如果要锁 Ruby 版本就加上 .rvmrc(不过对方可以忽略)。
在某版本下安装的 rails,是不是只和这个版本的 ruby 相对应,不是独立的呢
RVM 管理的每个版本 Ruby 都有一个 gems 目录,相互独立。ls $rvm_path/gems
bundle install 提示什么错误?
系统本地的 ruby 和 rvm 管理的 ruby 的 gems 是独立的,而且 rvm 管理的不同的 ruby 的 gems 也是独立的。
正确安装 rvm 的话,切换到什么 ruby,就是用什么 gems 集,环境变量都已经设置好不用自己设。
提问要把意图描述清楚。
@active_users = User.order('topics_count, comments_count').limit(12)
我不知道 AOP 是什么,以前讨论过几次这个话题,看有没有帮助
http://ruby-china.org/topics/6681 http://ruby-china.org/topics/4676
所以很可能是测试没通过,走到了 render :new
这一步
你把 @post.save 换成 @post.save! ,应该会抛出相应的错误。
#4 楼 @woaigithub 沉寂多时了
mongodb
mongodb
这个验证是用户验证还是数据验证啊。
多看 字节社 豆瓣
技术书都是图灵的。