变量不可变只是假象,你进程 id 指向的那个东西不还是可变的
我并没有把 id 放到 url 中,account 只是个虚拟的单数资源,本体是 current_user。
既然你已经意识到了资源取用是要先鉴权的,那么假如你用/addresses/1 取用一个地址,而地址根本没有和 user 关联,你要怎么鉴权?head 404 unless @address.credit_card.user_id == current_user.id
?如果是多对多关联你是不是还要把所有查出来然后对集合 find?如果业务逻辑需要操作多对多关联,你要怎么确定操作哪个?
知道每一级资源的 id,在链条上有多对多关联的时候是必须的,在仅有一对多关联的时候是推荐的。
嵌套资源的依赖是一层层的,你不可能直接拉到最后的,举个例子:
#你永远应该
current_user.credit_cards.find(params[:id])
#而不应该
CreditCard.find(params[:id])
#假如你的url是 /account/credit_cards/1/addresses,你应该这么取用
current_user.credit_cards.find(params[:credit_card_id]).addresses
嵌套资源一般而言是每层都要取出来的,因为你拿到一个 address 没有办法知道他是不是 current_user 拥有的,除非把 credit_card 也查出来。
block 和缩进有关,事实上你写 promise 写得多,就会发现一个函数拿两个匿名函数是很扯的。所以 ruby 里干脆只让方法带一个匿名函数,就是 block。
要骚操作完全可以
break if str[v.tap{v += 1}] != 3
当然 confuse 的程度是一样的
列表解构是有的,倒是 hash 解构没有
已收,谢谢。
联系方式是?我的 Order ID 是 289645。
我对介词“在”的理解有问题?
“在这周”指的是这周内,而不是这周前。同理,“在大会开始前一个星期”指1.week.before(beginning_of_conference)...beginning_of_conference
。
现在就是开会前一个星期,为什么不允许退票?
挺好的,其实这个比 1.8 那个好不少,1.8 的块就很迷,函数签名就很合理
我是用 workbench 自带的格式化。。懒得折腾
nmatrix 印象中老是遇到 segfault。。
其实还有个 rubynumo https://github.com/ruby-numo ,不过这个矩阵库实际用的时候跑得很慢,可能是我的用法不对
开发停止两年了🌚
这就叫闭包作用域,不是必要最好不要生造名词……
不如看 whitequark 的 parser 或者 seattlerb 的 ruby_parser,ripper 的比较低级
其实就 https://github.com/leandromoreira/redlock-rb 就好,比数据库的锁灵活
问题是你的 picture 是怎么来的。。Picture.all.map{|x| x.imageable}
?这样也是不会带 published 的啊,还是不清楚要怎么重现
说说你的查询语句是怎么写的,Product.published.map{|x| x.picutres.map{|x| x.imageable}}
这样?
所以说参考 slc 做一个嘛,反正注入关联要干的活 slc 里都写了
scope 是关联上的 scope?看不出你写的 scope 和关联有什么关系,一开始我以为是 default_scope,后来发现关联是会忽视 default_scope 的。。
你那样改写关联,会导致 includes 无效等杂七杂八的问题,用||=缓存的话,也要有相应失效的机制
有干这个的 gem https://github.com/hooopo/second_level_cache
不过带 where 条件的关联,用 slc 可能会导致关联没法正确过期,要留意一下或者你参照 slc 的思路自己弄一个
7102 年了,还不支持 linux 输入中文。
😐没看到 left join
那就A.joins(ActiveRecord::Base.send(:sanitize_sql, ["LEFT JOIN bs ON as.id = bs.id AND bs.state in (?)", state_arr]))
干嘛在 on 上加 where 条件... 直接 join 完了 where 就是
在 rubychina,甚至可以招 python
原来如此
`` open3