学 API 设计看 Github 的就可以了 相当标准,学代码 看 RubyChina 的也可
ls 说的思路对,补充一点是 Rails 请求的 Log 里打印的 Parameters 是真理
不过那 gem 没封装 form helper 所以用的时候可能比较麻烦,我建议自己写个 helper,比如我们的
def address_select(f, address, field, options = {})
case field
when :province
select_tag "#{f.object_name}[province_code]",
options_for_select(ChinaCity.list, address.province_code),
{prompt: '- 省/直辖市 -'}.merge(options)
when :city
select_tag "#{f.object_name}[city_code]",
options_for_select(ChinaCity.list(address.province_code), address.city_code),
{prompt: '- 城市 -'}.merge(options)
when :district
select_tag "#{f.object_name}[district_code]",
options_for_select(ChinaCity.list(address.city_code), address.district_code),
{prompt: '- 地区 -'}.merge(options)
else
''
end
另外,好像那 gem 的 jquery 代码我记得有点问题...我忘记当初因为什么没有 PR 回去了(貌似跟项目耦合还是啥情况来着。。三年前的事情了),我贴下我项目里重写的版本
(($) ->
$.fn.china_city = () ->
@each ->
$selects = $(@).find('.city-select')
$selects
.on 'change.city', ->
$this = $(@)
select_index = $selects.index($this)+1
select = $selects.eq(select_index)
# clear children's options
$selects.slice($selects.index(@) + 1).each ->
$(@).children().slice(1).remove()
# when select value not empty
if select[0] and $(@).val()
$.get "/china_city/" + $(@).val(), (data) ->
options = select[0].options
$.each data.data, (i, item) -> options.add new Option(item.data[0], item.data[1])
$ ->
($cityGroup = $('.city-group')).length and $cityGroup.china_city()
)(jQuery)
在移动应用开发群学习过骗 Star 做法了。。。入群前要求 star 某项目,入群附 Github id... 还有红包互捧群之类... 发现没有,排名高的全是做移动端开发或者前端的(我没否定主帖中这些人的能力)
可以参考之前征集会后 party 的帖子... https://ruby-china.org/topics/31086 另,我觉得春熙路那边就够吃好几天了。。
#40 楼 @akirapanda 我一直觉得一个语言有培训班可以量产初级开发者是这语言在某些领域普及的证明,比如Java啊C#啊之类。 所以愿意做培训班的人增多,愿意上 Ruby 开发的培训班的人增多肯定是有益的信号啊,甚至我都认为 Ruby 人才市场涌入大量培训班学员都未必是坏事呢(个人观点哈)。 免责一下,跟最近比较火的培训班帖子没关系,几年前我就这样看的(毕竟我也算是培训班出身...)
无论怎样,从这两届大会的购票的情况还有平时和朋友们交流的情况来看,很有意思,用 Ruby 的团队五花八门去了,并且似乎是供远小于求,这究竟是怎么回事就很让人好奇了...
直接 belongs_to :game
就可以了,对应数据库,players
表建立 game_id
字段
调用原始实现(这里属于方法的继承)使用 super
就可以了应该。
不过,在任何情况下,覆盖 Rails 动态生成的方法,都是非常非常不明智的。
在你给出的代码段里 books
如果是 Rails 根据关系生成的方法话,你这样去覆写基本可以推断是错误的了
@Rei Counter Cache 并不太可靠,参考我的 PR https://github.com/rails/rails/pull/9236 然而之后 Rails 4 的实现有变动,Shopify 的人接盘后还是坑的状态... https://github.com/rails/rails/pull/14849
不过 Counter Cache 本身也是通过 hook 持久化操作的一系列回调实现的,思路本身没问题,问题在于,框架层面做这事要考虑的因素太多,难以正确实现。 需要 Counter 强一致性的场合自己模仿一下 hook 掉 after save 之类的方法就好了
#31 楼 @redvoilin 这个问题很有意思,早年大会的参与者都是论坛水友,但这几年有点变化了,很多参会者并不知道或者并没有注册过论坛,包括我粗略扫过一遍购票数据,国内使用 Ruby 的团队可能远比想象中的要多,而且,这个圈子非常缺人,大多数公司招不到人,严重招不到人。
我在想去做一次市场调查
不过最好还是架个 nginx。。。这事交给 Ruby 做性能很差。。。
理论上应该在反向代理(nginx)那边解压的,App 不应该管这事,就像响应的时候压缩也不是在 App 这做的一样。 如果你需要在 App 这边做,并且 Rails 没能帮你还原请求的话,可能你要在 Rails 的 Rack stack 前自己写个 Rack 中间件做这件事了
最后,讨论完全跑题,本来应该是作者提了一些感悟,结果后来的讨论完全围绕 xdite 的培训班还有这 5w 值不值上。。。 类比一下技术话题,xx 公司重构系统的经验教训,不能不提到公司的业务范围、现状吧,然后讲起因、讲经验教训,和这篇文章的结构是不是很相似?那这是不是软广?
另外这帖子作者的简历 xdite 有发到北京 rubyists 群里,所以有些人看过了已经,人家有两年编程经验啊!花 5w 突破了自己的瓶颈(值不值是花钱的人说了算,外人劝什么劲,何况这钱都花完人家都有收获了)多值。
我上面文章也提过了,起码我自己大学前因为上了一阵青鸟,比其他同学早起步一年多时间,于是大二接触 Rails,大四时候成了 Rails contributor,工作起步就是公司主程,没毕业就组织了 2013 年的 RubyConf China,我说我扔 4w 进去就是值!别人可以夸我聪明,但是我的成绩和这段经历有关啊。
后来我也带过很多学生,在现实、在 QQ 群,这些人里有几个混的(从收入上、名声上)比我高多了,这是我的选择啊,甚至我不说没人知道我有这副业,xdite 比我的经验和能力高不知道哪去了,把这个能力变现,有何不可?
另外还有个事,RailsGirls 上也有女生转职 Rails 开发的例子呢,比 RailsGirls 更系统的培训班,出来这么一个学生,有什么好大惊小怪的...
我反对说这个是特权,可能这是第一篇参加培训班的学员给培训班和老师背书的,如果要说特权,那先看之前有没有类似帖子啊,翻出来看看,质量是否相似标准,如果没有,这顶多就算开了个先河,如果有,有就有呗。 另外,RubyChina 上限精华功能也就是一年左右的事情。
再反过来说,作者要没有什么亮点,xdite 先发帖背书岂不是自己砸自己脚?
另一方面,这就是个套,信不信,之后会有不少类似文发出来的,一旦有一篇被屏蔽或者怎样,就会有人翻出这篇来,你们怎么不客观。
不是我加精的,但我不觉得有什么问题,对你的感受逐条发表下个人看法,不代表社区。
#59 楼 @geeker4py 之后出个修订版,在 T 社嘛,稍等最近给大会收个尾
其实包括南方也该凉了,该弄长袖和帽衫了