Rails 4

时间:2015-12-15 19:41:05

标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord

我知道如何检查lambda的arity,但我不知道如何从范围中提取它。

4年前问过这个问题:

https://groups.google.com/forum/#!topic/rubyonrails-core/7Cs0T34mj8c
  

全部,在为元搜索宝石进行更改的过程中   我遇到了实现范围的问题   ActiveRecord的。为了在搜索中包含范围,我们传递名称   搜索方法的范围如下:{:name_of_my_scope => 1}。   元搜索会自动将"1"作为参数传递给范围。   这导致ArgumentError的lambda范围不带   论点。

     

我的意图是在调用之前检查范围的arity   如果范围没有参数,则删除"1"。我的   问题是,scope的实现将scope_options包装在一个   将* args传递给块的lambda(active_record / named_scope.rb:   106)。这导致对arity的调用始终返回-1,无论如何   范围定义所需的实际参数数量。

     

是否有不同的方法来实现允许公开的范围   范围定义中的arity?

     

实施例。

class Post < ActiveRecord::Base  
     scope :today, lambda {where(:created_at => (Time.new.beginning_of_day...(Time.new.end_of_day)) }  
  end 

irb> Post.today.arity # => -1

它要求在调用范围之前寻找范围的帮助。

是否找到了解决方案?

0 个答案:

没有答案