如何解决如何在 ruby 中将数组作为单个参数传递?
我正在考虑一种更优雅的方法,将数组元素作为单个参数传递给方法。
.black {
background-color: black;
}
.white {
background-color: white;
}
这很好用,我知道 splat 操作符做得很好,但我想看看是否可以不使用那个丑陋的星号,而是可以以某种方式重塑 def fetch_data(keywords)
Product.where("name ILIKE ? AND type ILIKE ?",*construct_keywords(keywords))
end
def construct_keywords(keywords)
keywords.map{ |keyword| "%#{keyword}%" }
end
的返回值以便 fetch_data 方法将数组元素识别为单独的参数。所以最终我希望它是这样的:
construct_keywords
提前致谢。
解决方法
虽然这可能很方便,但无法直接告知您的返回值将如何使用并“预先设置”。这是被调用的方法必须实现的东西。
您可能想要探索使用基于关键字的占位符,例如 name ILIKE :name
,然后您可以在其中创建匹配的哈希。
现在,您将任意数量的 keywords
传递给返回任意大小的结果数组的方法,然后该方法将绑定到精确到两个位置的查询。这似乎很容易失败。
使用 [ :name,:type ].zip(keywords.map { ... }).to_h
可以为您提供一些可以插入其中的东西,当然,假设您有两个关键字参数。
虽然可能需要一些重构,但一个很难弄乱的表单看起来像这样:
def fetch_data(name:,type:)
Product.where("name ILIKE :name AND type ILIKE :type",name: name,type: type)
end
必须指定那些关键字参数的地方,并且只能有两个。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。