为什么不能在Symbols或Fixnums上定义单例方法?

有些Ruby类不允许在其实例上定义单例方法。 例如, Symbol : var = :asymbol def var.hello “hello” end # TypeError: can’t define singleton method “hello” for Symbol 我认为这可能是对所有直接值的限制,但它似乎适用于nil , true和false (但不是Fixnum或Bignum实例): var = true def var.hello “hello” end var.hello #=> “hello” 我不明白为什么Ruby允许在某些对象类而不是其他对象上定义单例方法。

为什么使用“self”访问ActiveRecord / Rails模型属性?

贯穿我的应用程序self. 没有必要引用用户的名字。 name工作正常。 为什么以下代码要求self按预期工作? class User< ActiveRecord::Base before_save :validate_name def validate_name if self.name.nil? || self.name.empty? self.name= "Mr. No Name" end end 顺便说一下,我知道validates_presence_of可以用来阻止保存,但是如果没有给出名字,我想用默认保存。 Rails 3.0.7。

你如何处理ActiveSupport :: JSON和JSON gem之间的冲突?

我很难过这个问题。 ActiveSupport::JSON在各种核心对象上定义了to_json ,JSON gem也是如此。 但是,实现方式并不相同 – ActiveSupport版本接受参数,而JSON gem版本则不接受参数。 我安装了一个需要JSON gem的gem,我的应用程序坏了。 问题是我在一个返回对象列表的控制器中使用to_json ,但我想控制返回哪些属性。 当我的系统中的任何地方的代码确实require ‘json’我收到以下错误消息: TypeError: wrong argument type Hash (expected Data) 我尝试了一些我在网上阅读的东西来修复它,但没有任何效果。 我最终重写了gem以使用ActiveSupport::JSON.decode而不是JSON.parse 。 这有效,但它不可持续……每次我想要使用需要JSONgem的gem时,我都无法分配gem。 更新:此问题的最佳解决方案是升级到Rails 2.3或更高版本,修复它。

什么|| =在Ruby中意味着什么?

可能重复: 什么|| =在Ruby中意味着什么? 什么||=在Ruby中意味着什么?

在Rails中validation英语词典中的单词?

我做了一些谷歌搜索但找不到我想要的东西。 我正在开发一个拼字游戏类型的单词游戏,并且想知道是否有一种简单的方法来validation玩家在游戏中输入的内容实际上是一个单词。 他们正在打字。 是否针对某种英语语言词典数据库加载了应用程序中解决此问题的最佳方法? 如果是这样,是否有任何提供此类function的库? 如果没有,你会建议什么? 谢谢你的帮助!

你如何解析一段文字到句子? (相当于Ruby)

你如何考虑段落或大量文本并将其分解为句子(最好使用Ruby),同时考虑到Mr.和Dr.以及USA这样的案例? (假设你只是将句子放入一个数组数组中) 更新:我想到的一个可能的解决方案是使用词性标注器(POST)和分类器来确定句子的结尾: 从琼斯先生那里获取数据时,他走出意大利避暑别墅的阳台,感受到了温暖的阳光。 他很高兴活着。 CLASSIFIER先生/ PERSON Jones / PERSON感觉/ O / O温暖/ O太阳/ O开/ O他/ O面/ O as / O他/ O步/ O出/ O到/ O / O阳台/ O / O他/ O夏天/ O家/ O in / O意大利/ LOCATION ./O他/ O是/ O快乐/ O到/ O是/ O活着/ O ./O POST先生/ NNP Jones / NNP感觉/ VBD / DT温暖/ JJ太阳/ NN开/他/ […]

Mac Rmagick不会安装Xcode 4.2

我刚刚得到一个新的macbook pro并尝试设置我的开发环境。 我从应用程序商店下载了xcode 4.2并安装了它,之后我安装了自制程序和RVM。 ImageMagick,readline,ruby 1.9.3-head全部安装完美,直到我运行捆绑更新,试图安装rmagick。 经过很长一段时间的调查,我得出结论,它找不到libgomp。 输出来自gem install rmagick是: $ gem install rmagick Building native extensions. This could take a while… ERROR: Error installing rmagick: ERROR: Failed to build gem native extension. /Users/dhiemstra/.rvm/rubies/ruby-1.9.3-head/bin/ruby extconf.rb checking for Ruby version >= 1.8.5… yes extconf.rb:128: Use RbConfig instead of obsolete and deprecated Config. checking for clang… yes […]

Rails路线:资源错误单数

我在routes.rb有以下行(Rails 4.1.4): resources :request_caches 但是,当我运行rake routes我得到以下输出: request_caches GET /request_caches(.:format) request_caches#index POST /request_caches(.:format) request_caches#create new_request_cach GET /request_caches/new(.:format) request_caches#new edit_request_cach GET /request_caches/:id/edit(.:format) request_caches#edit request_cach GET /request_caches/:id(.:format) request_caches#show PATCH /request_caches/:id(.:format) request_caches#update PUT /request_caches/:id(.:format) request_caches#update DELETE /request_caches/:id(.:format) request_caches#destroy 如您所见,Rails以某种方式将request_caches复数映射到request_cach单数。 但它应该是request_cache 。 这是一种特殊情况,因为caches这个词? 我也玩过 resources :request_caches, as: :request_cache 但这导致了错误的路由,如request_cache_index 。 此外,我认为这是一项标准任务,应该使用Rails实习生路线助手清楚地解决。 那么,我做错了什么?

ruby:类实例变量vs实例变量

我的想法是为来自java背景的人创建一个社区wiki,因为阅读了很多解释,直到我真正尝试了几件事并且拼图的各个部分开始找到他们的位置时,我无法理解任何事情。 但我首先需要确保我做对了。 从这样的背景来看,我发现@variable可能意味着两个非常不同的东西,这让我非常困惑。 这是一个例子: class Test @ins = “gah” def self.ins puts @ins end def initialize() @ins = “wtf?” end def ins2 puts @ins end end 据我所知,第一个@ins是表示类Test的对象的实例变量。 第二个@ins是Test类对象中的实例变量。 现在事情开始对我有意义了。 这里有几个例子: [14] pry(main)> test.ins2 wtf? 我们正在调用一个对象的方法,它返回对象的实例变量。 [15] pry(main)> test.ins NoMethodError: undefined method `ins’ for # 我们试图通过一个对象调用一个类方法,这个方法属于类,所以我们得到NoMethodError [16] pry(main)> Test.ins gah 我们正在调用一个类方法,因此它可以正确地看到类对象的实例变量。 [17] pry(main)> Test.ins2 NoMethodError: undefined […]

检查Ruby连接是否存在?

刚刚问到如何使用javascript检查是否存在互联网连接,并获得了一些很好的答案。 在Ruby中最简单的方法是什么? 在尝试使生成的html标记代码尽可能干净时,我想有条件地渲染javascript文件的脚本标记,具体取决于是否存在Internet条件。 像(这是HAML)的东西: – if internet_connection? %script{:src => “http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js”, :type => “text/javascript”} – else %script{:src => “/shared/javascripts/jquery/jquery.js”, :type => “text/javascript”}