从 MetaWhere 迁移到 Squeel 并不再使用符号

发布于 2024-12-03 21:30:01 字数 405 浏览 1 评论 0原文

我有一个应用程序想要从 MetaWhere 迁移到 Squeel,以准备升级到 Rails 3.1。

这基本上是一个简单的过程,但我有一个案例给我带来了一些问题。问题是我将字段和值都指定为变量。在我的 MetaWhere 查询中,我可以简单地从字段名称中创建符号,然后在查询中使用它,但 Squeel 不使用符号,而是依赖于 instance_eval,我不知道如何使用它创建类似的查询...

插图原始查询的内容可能是:

Article.where("#{field_name}".to_sym.matches => '%' + field_value + '%')

如何在 Squeel 中创建类似的查询?

我知道我可以指定我想要使用旧符号功能,但我宁愿完全转换为新语法。

I have an application where I want to migrate from MetaWhere to Squeel in preparation for an upgrade to Rails 3.1.

This has been mostly a simple process but I have one case that causes me a bit of problems. The problem is that I have both the field and the value specified as variables. In my MetaWhere queries I could simply create symbols out of the field names and then use that in the query but Squeel does not use symbols but instead relies on instance_eval and I cannot figure out how to create a similar query using that...

An illustration of the original query could be:

Article.where("#{field_name}".to_sym.matches => '%' + field_value + '%')

How do I create a similar query in Squeel?

I know I can specify that I want to use the legacy symbol functionality but I would rather fully convert to the new syntax.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

世界等同你 2024-12-10 21:30:01

这是有效的:

Article.where{article.send(field_name) =~ '%' + field_value + '%'}

小写的“文章”是表名。

This works:

Article.where{article.send(field_name) =~ '%' + field_value + '%'}

The lowercase 'article' being the table name.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文