标签: ruby

在Ruby中查找类的所有后代

我可以轻松地提升Ruby中的类层次结构:

String.ancestors     # [String, Enumerable, Comparable, Object, Kernel]
Enumerable.ancestors # [Enumerable]
Comparable.ancestors # [Comparable]
Object.ancestors     # [Object, Kernel]
Kernel.ancestors     # [Kernel]
Run Code Online (Sandbox Code Playgroud)

有没有办法下降层次结构?我想这样做

Animal.descendants      # [Dog, Cat, Human, ...]
Dog.descendants         # [Labrador, GreatDane, Airedale, ...]
Enumerable.descendants  # [String, Array, ...]
Run Code Online (Sandbox Code Playgroud)

但似乎没有一种descendants方法.

(出现这个问题是因为我想找到Rails应用程序中的所有模型,这些模型来自基类并列出它们;我有一个控制器可以使用任何这样的模型,我希望能够添加新模型无需修改控制器.)

ruby

138
推荐指数
6
解决办法
6万
查看次数

什么是Ruby最好/最简单的GUI库?

什么是Ruby最好/最简单的GUI库?

我更喜欢跨平台的GUI库,但目前我只关心Windows(Win32).我发现难以找到任何看起来容易使用的东西.有吗?

ruby user-interface

137
推荐指数
10
解决办法
13万
查看次数

如何避免运行ActiveRecord回调?

我有一些具有after_save回调的模型.通常这很好,但在某些情况下,比如在创建开发数据时,我想保存模型而不运行回调.有一个简单的方法吗?类似于......的东西

Person#save( :run_callbacks => false )
Run Code Online (Sandbox Code Playgroud)

要么

Person#save_without_callbacks
Run Code Online (Sandbox Code Playgroud)

我查看了Rails文档但没有找到任何内容.但是根据我的经验,Rails文档并不总是讲述整个故事.

UPDATE

我发现了一篇博文,解释了如何从这样的模型中删除回调:

Foo.after_save.clear
Run Code Online (Sandbox Code Playgroud)

我找不到该方法的记录,但似乎有效.

ruby ruby-on-rails rails-activerecord

137
推荐指数
10
解决办法
10万
查看次数

URI.escape和CGI.escape有什么区别?

什么之间的区别URI.escape,并CGI.escape和我应该使用哪一个?

ruby

137
推荐指数
4
解决办法
7万
查看次数

Rails对象哈希

我有以下创建的对象

@post = Post.create(:name => 'test', :post_number => 20, :active => true)
Run Code Online (Sandbox Code Playgroud)

保存后,我希望能够将对象恢复为哈希值,例如通过执行以下操作:

@object.to_hash
Run Code Online (Sandbox Code Playgroud)

如何在轨道内实现这一目标?

ruby ruby-on-rails

137
推荐指数
6
解决办法
10万
查看次数

136
推荐指数
8
解决办法
10万
查看次数

在Ruby gem依赖项中,tilde-than-than(〜>)是什么意思?

~>在Ruby gem依赖关系的上下文中意味着什么?

例如,在RubyMine IDE中打开旧项目时,我收到此消息

Gems required for project are not attached:
arel (~> 2.0.2),
rspec-expectation (~> 2.5.0)...

我已经在Ruby世界的其他地方看到了这种波形符号(它不是特定于RubyMine).这个操作符的名称是否比笨拙的波形符号更大

ruby rubygems

136
推荐指数
1
解决办法
4万
查看次数

需要注入方法的简单说明

[1, 2, 3, 4].inject(0) { |result, element| result + element } # => 10
Run Code Online (Sandbox Code Playgroud)

我正在看这个代码,但我的大脑没有记录数字10如何成为结果.有人会介意解释这里发生了什么吗?

ruby syntax

135
推荐指数
9
解决办法
5万
查看次数

如何在Ruby中合并两个哈希而不覆盖重复键?

是否有一种简单或优雅的方法来合并两个哈希而不会覆盖重复的键?

也就是说,如果密钥存在于原始哈希中,我不想更改其值.

ruby

135
推荐指数
2
解决办法
8万
查看次数

使用Rails序列化将哈希保存到数据库

我试图在我的rails应用程序中将哈希映射ID保存到多次尝试中.我迁移到数据库以适应这个新列:

class AddMultiWrongToUser < ActiveRecord::Migration
  def self.up
    add_column :users, :multi_wrong, :string
  end

  def self.down
    remove_column :users, :multi_wrong
  end
end
Run Code Online (Sandbox Code Playgroud)

在我的模型中,我有:

class User < ActiveRecord::Base 
 serialize :multi_wrong, Hash
end
Run Code Online (Sandbox Code Playgroud)

但是,当我使用rails控制台通过执行以下操作来测试时:

user = User.create()
user.multi_wrong = {"test"=>"123"}
user.save
Run Code Online (Sandbox Code Playgroud)

输出为false.这里出了什么问题?

ruby serialization activerecord ruby-on-rails

135
推荐指数
3
解决办法
9万
查看次数