标签: ruby

具有最大参数数量的Ruby方法

我有一个方法,应该接受最多2个参数.它的代码是这样的:

def method (*args)
  if args.length < 3 then
    puts args.collect
  else
    puts "Enter correct number of  arguments"
  end
end
Run Code Online (Sandbox Code Playgroud)

是否有更优雅的方式来指定它?

ruby variadic-functions

31
推荐指数
3
解决办法
4万
查看次数

Rails查询通过仅限于最新记录的关联?

class User 
has_many :books
Run Code Online (Sandbox Code Playgroud)

我需要一个返回的查询:

最近一本书的用户:complete => true.即如果用户最近的书有:complete => false,我不希望它们出现在我的结果中.

到目前为止我有什么

User.joins(:books).merge(Book.where(:complete => true))
Run Code Online (Sandbox Code Playgroud)

这是一个很有希望的开始,但没有给我我需要的结果.我已经尝试.order("created_on desc").limit(1)
在上面的查询结尾处添加一个但是当我期待很多时,我最终只得到一个结果.

谢谢!

ruby sql ruby-on-rails

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

是否有红宝石单行"如果x返回"?

有很多我需要添加的地方

if this_flag
  return
end
Run Code Online (Sandbox Code Playgroud)

可以用ruby在一行上完成吗?

ruby syntax

31
推荐指数
3
解决办法
2万
查看次数

在ruby中访问嵌套哈希的元素

我正在使用ruby编写的一个小实用程序,它广泛使用嵌套哈希.目前,我正在检查对嵌套哈希元素的访问,如下所示:

structure = { :a => { :b => 'foo' }}

# I want structure[:a][:b]

value = nil

if structure.has_key?(:a) && structure[:a].has_key?(:b) then
  value = structure[:a][:b]
end
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?我想能够说:

value = structure[:a][:b]
Run Code Online (Sandbox Code Playgroud)

而得到nil,如果:一个是不是一个关键structure,等等.

ruby hash hash-of-hashes

31
推荐指数
5
解决办法
7万
查看次数

如何将动态Ruby代码嵌入Slim模板中的"javascript"部分?

单程:

javascript_tag do
  == "var all_product_ids = #{existing_ids.to_json};"
  == "var products_json   = #{@filter.data.to_json};"
Run Code Online (Sandbox Code Playgroud)

要么:

= %Q{
var all_product_ids = #{existing_ids.to_json};
var products_json   = #{@filter.data.to_json};
}
Run Code Online (Sandbox Code Playgroud)

对此有什么更好的解决方案吗?

ruby ruby-on-rails slim-lang

31
推荐指数
4
解决办法
3万
查看次数

Ruby掉了Netbeans 7,如何在Netbeans7中使用它?

在Netbeans 7中,Ruby支持被删除:

虽然我们的Ruby支持历来很受欢迎,但基于现有的低使用率趋势,我们无法证明继续分配资源来支持该功能.

如何在Netbeans 7中使用它?

ruby netbeans netbeans-7

31
推荐指数
3
解决办法
2万
查看次数

如何查看myoku数据库的记录?

我刚刚将我的应用程序部署到heroku并将我的自定义域指向heroku服务器.如何查看heroku数据库中的记录?

ruby database hosting ruby-on-rails heroku

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

返回自身的Ruby方法

我正在做一些反思,遇到意想不到的路障.

ruby(或rails)中是否有一个返回自身的对象方法

ruby-1.9.2> o = Object.new
 => #<Object:0x00000104750710> 
ruby-1.9.2> o.class
 => Object 
ruby-1.9.2> o.send :self
NoMethodError: undefined method `self' for #<Object:0x00000104750710>
Run Code Online (Sandbox Code Playgroud)

我想要的是

ruby-1.9.2> o.send :self
 => #<Object:0x00000104750710> 
Run Code Online (Sandbox Code Playgroud)

这是内置的吗?或者我是否需要扩展Object(它总是让我紧张开放对象):

class Object

  def itself
    self
  end

end
Run Code Online (Sandbox Code Playgroud)

然后:

ruby-1.9.2> o.send :itself
 => #<Object:0x00000104750710> 
Run Code Online (Sandbox Code Playgroud)

好吧,关于我想要实现的一些背景知识.我在我的rails应用程序中有一个通用的表助手,如果是这样的话你会打电话:

  render_list @person, [{field: :name, link_to: :itself},
                        {field: {address: :name}, link_to: :address}]
Run Code Online (Sandbox Code Playgroud)

我正在努力寻找合适的方式:itself- 但我认为我的补丁是要走的路.

ruby reflection ruby-on-rails

31
推荐指数
3
解决办法
9231
查看次数

Rails 3查询关联计数的条件

在带有mysql的Rails 3中,假设我有两个模型,Customers和Purchases,显然是购买belongs_to客户.我想找到2个或更多订单的所有客户.我可以简单地说:

Customer.includes(:purchases).all.select{|c| c.purchases.count > 2}
Run Code Online (Sandbox Code Playgroud)

但实际上,上面的行会查询Customer.all和Purchase.all的大小,然后在ruby中执行"select"类型处理.在一个大型数据库中,我更愿意避免在ruby中进行所有这些"选择"计算,并让mysql进行处理,只给我合格客户列表.这要快得多(因为mysql更多地调整了这一点)并且显着减少了数据库的带宽.

不幸的是,我无法用rails中的构建块(where,having,group等)来实现代码,以实现这一点,这些内容符合(psudo-code):

Customer.joins(:purchases).where("count(purchases) > 2").all
Run Code Online (Sandbox Code Playgroud)

我将满足于直接的MySql解决方案,尽管我更喜欢在优雅的rails框架中解决这个问题.

ruby mysql ruby-on-rails-3

31
推荐指数
2
解决办法
1万
查看次数

调用/应用lambda与函数调用 - Ruby中的语法是不同的.为什么?

我是Ruby的新手,仍然试图理解一些语言设计原则.如果我做对了,Ruby中的lambda表达式调用必须是方括号,而"常规"函数调用是"常规"/圆括号.

语法有什么不同的特殊原因吗?或者,换句话说,(为什么)调用者应该知道他们是调用函数还是应用lambda表达式?

ruby lambda lambda-calculus

31
推荐指数
3
解决办法
2万
查看次数