gpt4 book ai didi

ruby-on-rails - "taken"是 ruby​​ 中的关键字吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:28:11 27 4
gpt4 key购买 nike

直接进入问题。我有这样的查询:

@issue_books = current_user.issue_books
@already_issues = @issue_books.taken(params[:id])

其中 taken 是一个命名范围,定义如下:

scope :taken, lambda { |book_id| where(returned: false).where(book_id: book_id)  }

现在每次我运行这个查询时:

@issue_books.taken(params[:id]) 

我收到一个 ArgumentError: wrong number of arguments (1 for 0) 错误。

如果我将 taken 重命名为 taken_books 之类的名称,似乎一切正常。

所以我的问题是:taken 是 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

因此您定义的范围 taken 可能被 ActiveRecord::Delegate 中的定义所掩盖。

更新:我做了一些挖掘,taken 似乎被定义为 Arel::SelectorManagerlimit 的别名,ActiveRecord 的依赖项

关于ruby-on-rails - "taken"是 ruby​​ 中的关键字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13331903/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com