Ruby China
  • Topics
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • Sign Up
  • Sign In
@pinewong
Member
NO. 24405 / 2016-01-04

广州
24 Topics / 245 Replies
9 Followers
0 Following
37 Favorites
Reward
GitHub Public Repos
  • admin-template 60

    Back-end Management System Template, Tech Stack based on Vue.js + Rails, Key Features: RBAC Permi...

  • know-web 14

    Know WEB

  • admin-starter 12

    A admin starter by Golang

  • dpm 11

    Docker Package Manager, makes using your Docker as easy as package managers (apt, yum, brew).

  • dingtalk-client 6

    A simple HTTP client wrapper for Dingtalk.

  • codable 2

    Rails plugin for the attribute - code

  • kubernates-tutorial 0

    从 Kubernates 快速搭建到实际部署一个外网可用的博客教程。

  • songhuangcn.github.io 0

  • scripts 0

    Scripts for some tasks.

  • douban-top-250 0

More on GitHub
  • Overview
  • Topics
  • Replies
  • Favorites
  • Following
  • Followers
  • block 如果只有一个参数能否省略,直接使用_ 表示。 向 Scala 类似 at February 03, 2019

    不行

  • 老哥们,问个关于修改核心方法的问题 at January 26, 2019

    实现不了的,没办法统一添加,只能为每一个需要修改核心方法的类添加 using 语句。

    Refinements 作用域只有顶级、Module 和 Class,且遇到 end 就停止了,不能用在 Method 上。

    You may activate refinements at top-level, and inside classes and modules. You may not activate refinements in method scope. Refinements are activated until the end of the current class or module definition, or until the end of the current file if used at the top-level.

  • 新人求助:ArgumentError at January 06, 2019

    写全了就是

    find_room_in_dungeon(@player.location).connections([direction])

    这应该不是你的本意了吧

  • 新人求助:ArgumentError at January 06, 2019

    是方法内部发生了异常,

    find_room_in_dungeon(@player.location).connections [direction]

    这里 [] 前面多了个空格,导致当成参数了

  • asset 图片显示问题 at December 03, 2018

    https://stackoverflow.com/questions/33474285/get-digested-asset-path-in-model-or-controller

  • 关于类变量的疑问 at December 02, 2018

    给你补上例子

    class A
      def initialize
        @path=''
      end
      def path
        @path
      end
    end
    class B < A
      def initialize
        @path='b'
      end
    end
    class C < A
      def initialize
        @path='c'
      end
    end
    
    obj= B.new
    puts obj.path
    
  • 关于类变量的疑问 at December 02, 2018

    像你这种情况是不想公用属性啊,那应该用实例变量而不是类变量。

    但要记得实例变量区分类和他的单例类两个作用域,因此要把初始化的操作移到构造函数中,像上面在类中初始化会得不到你期望的效果

  • 关于类变量的疑问 at December 01, 2018

    首先这段代码最后的结果就是 c,最简单的,开一个 irb 把代码都粘贴上去验证一下就行了。你上面提到的 Nginx 结果没有什么问题,至于 rails s 结果错误,肯定是因为别的原因(我猜想你的 B, C 都是自动加载类,然后实际上验证结果时 C 没有加载或者 B 在 C 之后加载的)。

    至于结果为什么是 c,是因为 Ruby 的类变量会和所有子类以及他们的单例类共享的,即在上述的所有作用域中 @@path 的内存指向都是一样的。

    class A
      @@path=''
    
      def path_object_id
        @@path.object_id
      end
    
      def self.path_object_id
        @@path.object_id
      end
    
      puts path_object_id # => 70139278257540
      puts self.new.path_object_id # => 70139278257540
    end
    
    class B < A
      puts @@path.object_id # => 70139278257540
      puts self.new.path_object_id # => 70139278257540
    end
    
    class C < A
      puts @@path.object_id # => 70139278257540
    end
    
  • 请教 继承 父类后 需要 覆盖 父类的 private method 如何做到 在不加上 private 宣告 ,仍然是 private method at November 17, 2018

    可以用继承钩子解决你的问题,Class#inherited

  • 数组哈希累加 at November 15, 2018
    records.each_with_object({}) do |record, hash|
      record.each do |k, v|
        hash[k] ||= 0.0
        hash[k] += v
      end
    end
    
  • Ruby China 7 岁生日快乐 at October 28, 2018

    🎂 🎂 🎂

  • ajax delete 请求后页面不刷新 at October 26, 2018

    你这个伪装骗过了服务器,但没有骗过浏览器,浏览器还是当成 AJAX 请求处理

  • ajax delete 请求后页面不刷新 at October 25, 2018

    重定向是浏览器才有权利做的事情,服务端只能作出指示。

    如果是普通请求,浏览器收到服务端重定向 (3xx 状态码) 的指示后,会自动再向指示的地址发送一个请求,达到页面刷新。

    如果变成了 AJAX 请求,浏览器是不会响应重定向状态码指示的,这时候可以用 #3 上面说的方法,渲染一段 JS 代码给浏览器,浏览器收到后会执行实现页面刷新

  • Wiki 能开放编辑权限,保留审核权限吗 at October 22, 2018

    会很有帮助,收集一下大家的主要问题回答。但是最后还是要汇集展现出来,说到底社区还是需要原来的 Wiki 这样的教程,现在是内容无法及时更新的问题对吧。

  • Wiki 能开放编辑权限,保留审核权限吗 at October 21, 2018

    第一步,可以从翻译已有的文档开始:

    • https://www.digitalocean.com/community/tutorials
    • https://gorails.com/guides

    后面可以对国情添加一些指导,这样对新人的帮助也是一个很大的提高(新人经验少,如上面所说社区已有帖子各种教程个人观点多,对他们来说筛选起来并不简单,大多数人更希望能有一个 Wiki 或 Guides 的东西直接指导怎么做)

  • ActiveNotifier 帮助你的应用更简单的发送钉钉消息 at October 18, 2018

    没这个需求。(要打卡可以找虚拟定位)

  • Awesome Ruby China at October 05, 2018

    是的

  • 该如何理解符号作为实参传入方法呢? at September 23, 2018

    对,跟你定义的变量 value 没有任何关系

  • 该如何理解符号作为实参传入方法呢? at September 22, 2018

    把 value = 5 这一行去掉就好理解了

  • 求教函数调用与 send 方法的问题 at September 08, 2018

    写错了,fn = method(:appendX)

  • [分享] 纯 API 项目的路由书写方式 at September 07, 2018

    也有被动的情况,比如对接方文档在先,并且规定只能用 POST 和 GET 动作。此时就应该完全放弃 RESTful,重新定义一个标准。如果继续强求 RESTful,无法实现的接口再绕个弯(删除,修改操作用 collection)之类的,可能更会把接口定的不伦不类的。

  • [成都] 中邮速递易 招聘中高 Ruby 研发工程师 4 名,14-22k at August 29, 2018

    好像都是顶的人,为啥没人指出"一年半以内完成 Ruby 转 golang 的开发"这个啊,是招过去之后要全部转岗吗😅

  • 由于云服务商做安全测试,exception_notification 发送大量邮件 at August 28, 2018

    我对待这类异常的做法是直接从根源上处理,该捕获的直接捕获。虽然搞懂这些一个个异常比较麻烦,但是可以一劳永逸,且写成 lib 共享后,其他项目也可以不再受这些烦恼。

    例如简单的有刷接口,访问不存在路径的异常(线上不会报,但是日志会记录一大堆异常堆栈),可以在路由最下方使用 match 匹配所有路径的处理方式。另外像麻烦一点的有 Rack 层的参数解析异常,别人非得设置 json headers 然后在用一串非的 json 格式的参数数据请求你接口,这时候可以 加上中间件拦截 这类明显不正常的请求。

  • 设置了默认语言以后,如何去掉后面的参数 at August 17, 2018

    去掉这个就行:

    def default_url_options
      {locale: I18n.locale}
    end
    
  • homeland 里关于 elastic search 异步任务的一个疑问 at August 11, 2018

    感觉异步更新索引不传递 record,而是在回调里构建好 elasticsearch 需要的数据传到 job 更好一点,可以很好的实现回调时 record 的状态和执行 job 时 record 的状态统一,避免了上述执行任务时记录已经不存在(或不统一)的情况:

    # app/models/concerns/searchable.rb
    after_destroy_commit do
      SearchIndexerJob.perform_later('delete', self.class.index_name, self.class.document_type, id)
    end
    
    # app/jobs/search_indexer_job.rb
    def perform(operation, index, type, id, body = nil)
      client = Elasticsearch::Model.client
      case operation
      when 'delete'
        client.delete(index: index, type: type, id: id)
      end
    end
    

    关于软删除的问题,可以在软删除中添加 commit 回调,使得软删除和删除行为一致,然后就可以像上述一样当成普通删除处理了:

    # app/models/concerns/soft_delete.rb
    def destroy
      transaction do
        # 添加 destroy 回调
        run_callbacks(:destroy) do
          # 添加 transaction 的 commit 回调
          self.class.connection.add_transaction_record(self)
          # 给 commit 回调添加条件(on: :destroy)
          @_trigger_destroy_callback = if persisted?
                                         # 此处逻辑修改
                                         time = Time.zone.now
                                         update_columns(deleted_at: time, updated_at: time)
                                       else
                                         true
                                       end
          @destroyed = true
          freeze
        end
      end
    end
    

    上述代码都是在 Rails 5.2 的环境下测试的,其他版本细节可能会有所不同

  • rails:render 方法渲染问题 at July 27, 2018

    原来 article 的时候,你是都保持一致,但是换成 example 时,你还有个地方没换啊

  • rails:render 方法渲染问题 at July 26, 2018

    controller 里的 '@article' 要跟 form_for 里的 ':example' 对上,参数就是从这里传过去的

  • 现在公司有个需求,要求点击网站 a 的订单按钮跳转到网站 b 的订单列表,用户信息是同一个,要求跳转同时自动登录网站 b,求大神指点 at July 26, 2018

    技术关键字 SSO

  • ActiveRecord 自关联 (自联结) 模型中,如何创建第一个对象? at July 17, 2018

    belongs_to :parent_group, class_name: "UserGroup", optional: true

  • 如何在 model 中添加一个属性,默认值为:与该 model 数据相关的动态值 at July 11, 2018

    default 参数是支持块的,可以用块传动态值:

    attribute :uid, :string, default: proc { Digest::MD5.hexdigest(1) }
    
  • Prev
  • 1
  • 2
  • 3
  • 4
  • …
  • 7
  • 8
  • Next
关于 / RubyConf / Ruby 镜像 / RubyGems 镜像 / 活跃会员 / 组织 / API / 贡献者
由众多爱好者共同维护的 Ruby 中文社区,本站使用 Homeland 构建,并采用 Docker 部署。
服务器由 赞助 CDN 由 赞助
iOS 客户端 / Android 客户端 简体中文 / English