gpt4 book ai didi

ruby-on-rails - rails activerecord where子句如何接受动态参数?

转载 作者:行者123 更新时间:2023-12-01 10:18:14 27 4
gpt4 key购买 nike

在 ruby​​ web 中为方法定义参数。

def para_check(para1, para2, para3 .... )

end

activerecord .where 是如何定义的,以便它接受动态参数?

我浏览了几个博客/网站,但找不到有用的资源。

最佳答案

在 Ruby 中,您可以在参数前加上 splat (*) 来定义接受任意数量位置参数的方法:

def foo(*x)
x
end

foo(1,2,3) == [1,2,3] # true

这也称为 variadic function .如您所见,这会根据参数列表创建一个数组。

您还可以组合编号和位置参数以及拼音:

foo(bar, *args)
[bar, args]
end

foo(1, 'a', 'b') == [1, ['a','b']] # true

这使得该方法需要一个参数,但允许无限数量的参数。

ActiveRecord::QueryMethods#where 方法接受位置参数和关键字参数:

where('foo = :x OR bar = :y', x: 1, x: 2)

从 Ruby 2.0 开始,您可以使用:

def foo(*args, **kwargs)
[args, kwargs]
end

foo(1, 2, 3, bar: 'baz') == [[1, 2, 3], { bar: 'baz' }] ## true

以前,您必须使用带有数组参数和可选散列参数的各种 hacky 解决方案。您仍然可以在 Rails 源代码和许多在 Ruby 2.0 之前编写的其他代码中找到它们。

关于ruby-on-rails - rails activerecord where子句如何接受动态参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58857127/

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