如果不是nil而不是空,则合并数组

Ruby中有一些数组(这种情况下有4个数组) array1 = [{key=”label1.1″, value=”label1.2″}, {key=”label1.2″, value=”label1.2″}] array2 = [{key=”label2.1″, value=”label2.2″}] array3 = [] array4 = nil result_array = array1 | array2 | array3 | array4 每个数组都具有与其他数组相同的结构:它是哈希值。 它中有多少元素,如果它是零或空的 – 它是未知的。 所以我需要result_array来看: [{key=”label1.1″, value=”label1.2″}, {key=”label1.2″, value=”label1.2″}, {key=”label2.1″, value=”label2.2″}] 但是,该代码将导致exception,因为array4等于nil 。 是否有任何Ruby方法来检查数组是否为空且不为空,如果是,则将其合并到result_array ?

Rails:在同一个应用程序中同时使用mysql和postgres?

为什么你会问? 因为我已经在mysql上构建了应用程序,并且只需要为我的应用程序的GIS组件开始使用postgres。 最终我将完全迁移到postgres,但同时想知道这是否可行

无法从Sequel gem连接mysql

当我尝试从Sequel连接MySQL时。 我收到这些错误: require ‘rubygems’ require ‘sequel’ DB = Sequel.connect(:adapter => ‘mysql’, :user => ‘root’, :host => ‘localhost’, :database => ‘scanty’,:password=>’xx’) DB.tables Sequel::DatabaseConnectionError: NameError uninitialized constant Mysql::CLIENT_MULTI_RESULTS from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/adapters/mysql.rb:98:in `connect’ from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/database.rb:92:in `initialize’ from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/connection_pool.rb:166:in `call’ from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/connection_pool.rb:166:in `make_new’ from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/connection_pool.rb:153:in `available’ from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/connection_pool.rb:144:in `acquire’ from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/connection_pool.rb:143:in `synchronize’ from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/connection_pool.rb:143:in `acquire’ from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/connection_pool.rb:105:in `hold’ from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/database.rb:471:in […]

使用范围在ActiveRecord中的多个DateTime范围内返回结果

我有一个Session模型,它具有:created_at日期和:start_time日期,两者都存储在数据库中:time 。 我目前正在一个庞大的表上吐出一堆结果,并允许用户使用范围按单个日期和可选的时间范围过滤结果,如下所示: class Session DateTime.strptime(date, ‘%m/%d/%Y’)..DateTime.strptime(date, ‘%m/%d/%Y’).end_of_day ) } scope :filter_by_time, lambda { |date, time| to = time[:to] from = time[:from] where(:start_time => DateTime.strptime(“#{date} #{from[:digits]} #{from[:meridian]}”, ‘%m/%d/%Y %r’).. DateTime.strptime(“#{date} #{to[:digits]} #{to[:meridian]}”, ‘%m/%d/%Y %r’) ) } end 控制器看起来或多或少像这样: class SessionController :created_at) end end end 我需要允许用户使用多个日期过滤结果。 我收到了params作为字符串格式的逗号分隔列表,例如”07/12/2012,07/13/2012,07/17/2012″ ,并且需要能够在数据库中查询几个不同的日期范围和这些日期范围内的时间范围,并合并这些结果,例如7月12日,7月13日和7月17日下午6:30至7:30之间的所有会话。 我一直在寻找各种不同的东西,但我无法弄清楚如何实际做到这一点。 这是否可以使用范围? 如果不是最好的方法是什么? 我最接近的猜测看起来像这样,但它没有返回任何东西,所以我知道这是错的。 scope :filter_by_date, lambda { […]

如何让Ruby找到本机库?

我在/ usr / local / lib中安装了一些本机库。 我现在正在尝试安装需要这些以便正确构建的gem,但是gem构建失败,因为它找不到库。 gem的extconf.rb文件试图确认它可以找到带有have_library()的库但是由于某种原因这会失败。 我尝试设置一堆环境变量,但似乎没有任何工作: irb(main):003:0> require ‘mkmf’ => true irb(main):004:0> have_library(‘gecodesearch’) checking for main() in -lgecodesearch… no => false irb(main):005:0> ENV[‘LD_LIBRARY_PATH’]=’/usr/local/lib’ => “/usr/local/lib” irb(main):006:0> have_library(‘gecodesearch’) checking for main() in -lgecodesearch… no => false irb(main):007:0> ENV[‘DYLD_LIBRARY_PATH’]=’/usr/local/lib’ => “/usr/local/lib” irb(main):008:0> have_library(‘gecodesearch’) checking for main() in -lgecodesearch… no => false irb(main):009:0> have_library(‘libgecodesearch’) checking […]

如何覆盖’as_json’或’to_json’方法以便’respond_to’而不包含指定的信息?

我正在使用Ruby on Rails 3,我想覆盖(可能在模型文件中) as_json或to_json方法,以便在不包含某些信息的情况下响应HTTP请求。 在我的帐户模型中,我有 def as_json(options = {}) super( :except => [ :password ] ) end 在我的控制器中我有 format.json { render :json => @account, :status => 200 } 例如,当我向/account/1.json发出请求时,我还返回了密码属性,出于安全原因,我不想要。 那么, 如何防止包含指定信息? 我能做到这一点并且有效 format.json { render :json => @account.to_json(:except => [:password]), :status => 200 } 但我需要重构 。

查看可用方法ruby

如何在ruby中查看对象上的所有可用方法。 当我输入File时,我正在使用aptana IDE。 没有显示任何方法。 我来自eclipse / java背景。 谢谢

在没有rails的ruby中实现rails before_filter

我在所有课程中使用ga logger。 我希望每个msg都以类名和方法名开头,如下所示: Class_name::Method_name 这就是我现在正在做的事情: class FOO def initialize end def bar msg_prefix = “#{self.class}::#{__method__}” … some code … @logeer = “#{msg_prefix} msg …” end def bar2 msg_prefix = “#{self.class}::#{__method__}” … some code 2 … @logeer = “#{msg_prefix} msg2 …” end end 我想使用像rails中的before_filter来防止两面性,我使用sinatra但是这些类是普通的老ruby 1.9.3类 想法?

使用Rails助手来渲染部分

根据我的理解,帮助程序主要用于从某些特定于视图的逻辑中清除视图。 但是在我目前的新项目(遗留应用程序)中,我偶然发现了许多看起来像这样的帮助程序 def itemprepare render :partial => ‘items/itemlist_summary’ end 它是否正确? 渲染部分给我似乎是你想在视图中做的事情,因为它不包括任何需要抽象的逻辑。 我应该只是内联所有这些助手吗?

什么是rails中的`stringify_keys’以及如何在出现此错误时解决它

在我的应用程序的部分文件中,我有以下代码片段用于显示用户导航(通过Devise): – ‘delete’ do %> 但我得到一个错误说: – undefined method `stringify_keys’ for “/users/sign_in”:String 现在我的问题是: – 什么是`stringify_keys’一般? 我如何在我的代码中解决这个问题??? 谢谢…