我觉得是不是你 save 的逻辑有问题,在回调里面还有个 save
你试试给个一定会通过的 validate,看看你的数据会不会 save 两次
楼上说的对 另外 session 的存储方式是可选的,rails 默认使用 cookie 来存,也可以存在服务端的
说 session 是特殊的,也不算,你可以把它和 param 这个 hash 理解成一类,本质上是在中间件里实现的
然后你说你需要自己定义一个这样的 hash 来存信息,不是很理解,为用户会话传递信息用 session 足够了吧,有前置验证可以用 before_action
真要造一个也可以,按 session 的源码写个中间件加进去
这种东西,你让他自己 new 两个新 model 试一下,比你说一百句都管用 他们自己本来就已经搅不清楚了,又不愿意动手,你给他解释再多也不过换来他们一句:哦,这样啊
会是防火墙么? 吃瓜群众路过,还没玩过 ActiveCable
不是黑,对一部分 世界上最好的语言 的程序员来说还是会有帮助的,可以帮刚会 git 的他们用好 git 😂
会不会是这样的: 你的 lvs 是 http 方式转发,无论用户用什么过来,你收到的都是 http,rails 没有开启 ssl 时取当前 host,于是你的会被 301 到 http,然后 lvs 上做了 http 升 https,所以立马又 302 到 https
好厉害的样子
这么快写出这样的总结文,肯定是做了很详细的笔记吧
彩虹桥蜀九香挺近的,不过排队会排到哭吧
这种情况啊。。好像有点棘手
我觉得哈: 从对象间的关系来说,A 和 B 间的关系是相互的,是面对面的关系,而不是 关注某人 这种 面对背 的关系。所以我觉得如果是用两条数据的话,那基本所有记录都 double 了(就算是朋友这种你也需要冗余成两条数据,因为 relation 中的关系设计已经是单向了),为了保证不出现孤儿记录,维护成本会无形增加很多 所以我会在 relation 里这样设计
user_a | user_b | role_a | role_b |
---|---|---|---|
A | B | father | son |
A | C | friend | friend |
class User
# 定义所有的的关系,不介意性能的话,这里可以直接从数据库或缓存中取
all_relations = %w(son father firends)
all_relations.each do |role|
define_method(role) do
r = role.singularize
relations = Relation.where(user_a: self.id, role_b: r)
.or(Relation.where(user_b: self.id, role_a: r))
.pluck(:user_a, :user_b)
relate_ids = relations.flatten.reject{ |id| id == self.id }
r == role ? User.find_by(id: relate_ids) : User.where(id: relation_ids)
end
end
end
A.son #=> B
B.son #=> nil
A.friends #=> [C]
不过这样一来,你也就基本彻底放弃使用 Rails 原有关联的可能性了 代码我没有验证过,你就把他当伪代码看吧。这里只有一个取操作,写的操作也可以这样写
Mongo 的话,感觉是不是会简单很多,上次用 Mongo 还是初学 Rails 的时候,已经很多不记得怎么用啦 有空我也得去补一下
属性可以是不同的种类?比如 盆友 亲人 对头 …
如果这种关系的种类是固定的,且不多,可以对每种关系当成普通的多对多来处理,比如用 has_and_belongs_to_many,由于是自关联,你需要手动指定链表表名
如果种类不固定或数量很多,可以建一个 relation 的 model(user_a,user_b,relation)来管理这些关系。当然这样查询的时侯你需要自己处理。你可以自己封装些方法来简化查询操作,也可以使用带条件的 has_many through 来声明关联,甚至可以在 User Model 中使用一点元编程实现和 rails 多对多关联一样的调用方式,从而淡化这个 relation 的存在。
ios 新客服端回复的,不能给你贴代码了
一定是花椒吃完了
1G 内存,机器上若还有其他项目跑着,真心不太够,特别是预编译静态资源的时候 不过这个也好处理,挂载一个 sawp 搞定
突然想起几年前 @vincenting 造的一个 go 的验证码 他是中文数字混排简单运算的方式
已经用上了 灰常棒
@huacnlee [email protected] 哈哈 昨天才卸了 老版本,正好
byebug rubymine 开启调试吃内存不要太凶
如果这个 js 是大部分用户用不到但是又比较大的,可以不放到 application.js 里,直接在需要的页面里单独引用
<%= javascript_include_tag 'pages' %>
并且向 config 中加入
Rails.application.config.assets.precompile += %w( pages.js)
不过原则上还是建议使用 华顺 的方案,另外如果使用了 turbolinks 需要注意重载问题。
IChou 是的,我想换名字,不知道可不可以 注册新号 小 id 位数太壮烈
如果你确实需要 user_id,user_hash 可以都存在这个表里 has_many through, 关联表本身也是一个模型
你执行的是 ruby 后面的文件是个参数
#10 楼 @u1453357893 肯定是报同样的错啊,那个参数有没有也不影响,只是你写得没意义而已 我是想提醒你 第一个参数才是 namespace,你到底是想用什么值来做 namespace 呢? 感觉你的问题是在 redis 连接这块,在 console 里面调试下 namespace 看看能用不咯
Redis::Namespace.new 的第二参数处理里面,并没有对 :namespace
的处理,不知道你这个参数是干什么用的
def initialize(namespace, options = {})
@namespace = namespace
@redis = options[:redis] || Redis.current
@warning = !!options.fetch(:warning) do
!ENV['REDIS_NAMESPACE_QUIET']
end
@deprecations = !!options.fetch(:deprecations) do
ENV['REDIS_NAMESPACE_DEPRECATIONS']
end
end
顺便说一下 redis: instance, :namespace => "sidekiq_redis"
这种混搭的写法,看上去很不舒服
善用 stackoverflow 😄
#4 楼 @xxqfamous 就是使用的 TCP 啊