Ruby on rails 是";“采取行动”;ruby中的关键字?

Ruby on rails 是";“采取行动”;ruby中的关键字?,ruby-on-rails,ruby,lambda,named-scope,Ruby On Rails,Ruby,Lambda,Named Scope,直截了当地问。 我有这样一个问题: @issue_books = current_user.issue_books @already_issues = @issue_books.taken(params[:id]) 其中,take是一个命名范围,定义如下: scope :taken, lambda { |book_id| where(returned: false).where(book_id: book_id) } 现在,每次我运行此查询时: @issue_books.taken(pa

直截了当地问。 我有这样一个问题:

@issue_books = current_user.issue_books
@already_issues =  @issue_books.taken(params[:id])
其中,
take
是一个命名范围,定义如下:

scope :taken, lambda { |book_id| where(returned: false).where(book_id: book_id)  }
现在,每次我运行此查询时:

@issue_books.taken(params[:id]) 
我得到一个
ArgumentError:参数数目错误(1代表0)
error

如果我将
taked
重命名为类似
taked\u books
的其他名称,一切似乎都正常


所以我的问题是:
在ruby中是一个关键字吗?如果没有人能解释这个行为吗?

它不是ruby关键字,但它似乎是在作用域上定义的方法

试试这个:

@issue_books.method(:taken).owner
#=> ActiveRecord::Delegation
@issue_books.method(:taken).source_location
#=> (...)/gems/activerecord-3.2.6/lib/active_record/relation/delegation.rb
因此,您定义的范围
可能被
ActiveRecord::Delegate
中的定义所掩盖

更新
我做了一些挖掘工作,
take
似乎被定义为
limit
的别名,在
Arel::SelectorManager
中,
ActiveRecord

的依赖项定义了模型中名为
take
的任何函数,esp issue_book.rb?@AnandVeeramani没有人我知道这件事我在
issue_book
中没有定义任何东西我现在记得是的它取了
的别名
谢谢你提醒我