• 复杂与否需要看具体的场景。如果经常面对超过一千行的model,就会发现这些绕来绕去的写法是多么好用。 文章中举的例子都是单场景。许多看起来之前复杂,重构后更复杂,这种感觉是对的。

    但是有时候一个model牵连许多许多的业务逻辑的时候,二话不说全放在model里,这样做是works的,但是这么干简直就是犯罪。代码的可维护性,扩展性几乎没有。

    想想这样的时候情况:一个订单模型作为入口同时涉及到产品,条码,六七种支付模式,折扣,优惠码,定制(多糖少糖),会员卡,积分,余额,税款(不同地方税制不同),货币,时区,退货,库存,店面,客户,取号预订,电话预订,桌台分布,打印小票,单据....

    想想这些逻辑都在一次点餐消费的动作中执行并且由订单模型来统筹。

    有时候不是为了炫技,而是切实的需要。

  • 似乎忽然封了一波 VPN at 2016年9月20日

    希望如此吧. Google用不了, 邮件都没法收了.

  • 似乎忽然封了一波 VPN at 2016年9月19日

    补充一下, 只是可用, 不快.

  • @drshu 话说两天了,你的问题解决了吗? 解决了的话, 怎么解决的? 帖出来啊. 你掉进的这个坑我永远也不希望踩进去.

  • Mr _Why 的节奏吗

  • 应该没有太大关系的. 我觉得你这些问题大家帮你排查了这么久都找不出原因, 可能是服务器底依赖(编译器)或你的mina配置有问题. 你可以考虑sudo apt-get upgrade && sudo apt-get update一下. 再仔细检查一下你的Mina配置. 如果可以的话, 把配置帖出来. 明天早上大神们起床了, 帮你把下脉, 可能就解决了. 程序猿也是要睡觉的不是吗?

  • @drshu , 这样完全不知道怎么帮你了. 我之前升级到macOs时, 也碰到了nokogiri 1.6.8安装失败的问题, 最后是通过安装了xcode 8 beta并升级了CLI之后才OK的. 你可以试试从cli的角度去排查一下问题. 仔细看一下, 原来我提到的可能性 @huacnlee 已经提到过啊. 以后得认真看回复 😅 .

  • #19楼 @drshu 你确定你是通过rvm安装的? 我服务器上部署者身份运行which ruby是这样的/home/xxx/.rvm/rubies/ruby-x.x.x/bin/ruby, 这样看起来才像是rvm的玩法吧. 你运行ruby -v呢? (在部署者身份下)

  • 如果你本地运行gem install nokogiri -v '1.6.8'成功, 部署时却失败. 说明两种方式运行时你的ruby环境是不一样的. Mina部署时需要一个身份, 这个身份可能用的还是低版本的ruby(一般是系统自带的). 而你自己通过rvm安装的ruby 2.3.0, 则是你以root的身份安装的, 并不是全局的. 可以试着切换至Mina配置的部署者身份登录, 再运行下ruby -vwhich ruby. 希望以上全是臆测. 😄

  • #21楼 @geniousli 毕竟ruby是母语 😏

  • 工作地点具体在哪里呢? 深圳哪一块? 公司官网呢?

  • 为什么会有公司冲在前面用ROR却在windows进行开发?

  • 在学Go真是各种不习惯. 还是Ruby把人给惯坏了啊. 先是找irb也就是其他语言里的repl, 有推荐说用官方的playground, 这怎么够用?! 最后找到gore勉强可以一用. 而后, 开始找bundle的替代品, 现在还木有找到 😢 . 真是不舒服啊.

  • 这个验证怎么写? at 2016年9月07日

    #3楼 @xiaobai2 , 将Time.now.beginning_of_day换成1.hours.ago, 再将3改成2不就可以了吗? 至于new是没有validate的. 要创建数据是需要点相应按钮的吗. 你可以在render那个按钮前做下判断当前时间前推1个小时有没有创建限定的数量. 如果超出, 则不显示按钮并提示不能新建内容.

  • 这个验证怎么写? at 2016年9月06日
    validates :only_three, on: :create
    def only_three
        if class.where(["created_at > ?", Time.now.beginning_of_day]).count >= 3
          errors.add(:id, "you can create only 3 items per day.")
        end
    end
    

    没有测试, 但是这样写的思路应该是可以达到目的的. 其实这样的用户体验不好. 你应该在new时就访问数据库检查是不是已经有3条记录了. 如果有, 就直接提示不能再创建了, 而不是输入完数据提交时再检查. 也就是client side validation的概念.

  • 先点个赞再看代码 🆙

  • #13楼 @drshu 我一直用的是Capistrano. 对mina了解得不是太多. 以前有想过试试mina, 但是听说有时候会遇到一些坑得自己填, 也就没有尝试了. 毕竟涉及到生产环境了, 想来跟着官方走总是没错的. 不过现在应该不存在这样的问题了, 无论选哪样都是非常成熟的解决方案.

  • Capistrano到现在还是官方推荐的. Rails 5 新项目的GEMFILE中默认就有推荐了:

    # Use Capistrano for deployment
    # gem 'capistrano-rails', group: :development`
    
  • MAC中一般编译出错都是Xcode的问题. 比如说, 如果要用最新的macOS, 也就是macOS Sierra, 就得去官司网上去下载Xcode 8 beta. 安装后, 必须xcode-select --switch 到新装的版本. 而后再xcode-select --install.