Rails 三元运算符和“this”

发布于 2024-12-17 03:54:37 字数 388 浏览 1 评论 0原文

Rails 是否有像 javascript/Jquery 那样的 this

举个例子:

User.find_by_email(params[:candidate][:email].present? ? (u = this.id) : (u = 'not here')

或者:

if User.find_by_email(params[:candidate][:email].present?
  a += 1
  user = this
end

我知道在这种情况下可以用更有效的方式重写这段代码,但我的问题是如何使用this。 Ruby 有这样的东西吗?

Does Rails have a this like javascript/Jquery does?

Take this example:

User.find_by_email(params[:candidate][:email].present? ? (u = this.id) : (u = 'not here')

or:

if User.find_by_email(params[:candidate][:email].present?
  a += 1
  user = this
end

I'm aware that this code might be rewritten in more efficient ways in this case, but my question is about being able to use this. Does Ruby have something like this?

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

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

发布评论

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

评论(3

妥活 2024-12-24 03:54:37

在类的上下文中,您使用self

在这些情况下,尽管此代码不在 User 上下文中,所以您必须进行分配。

u = User.find_by_email(params[:candidate][:email])

user_name = u.any? ? u.name : 'not here'

在这种情况下,我更喜欢 .any? 而不是 .present?,因为它读起来更好。

In the context of a class you use self.

In these cases though this code is not in User context so you have to make an assignment.

u = User.find_by_email(params[:candidate][:email])

user_name = u.any? ? u.name : 'not here'

I prefer .any? to .present? in this context as it reads better.

好听的两个字的网名 2024-12-24 03:54:37

Ruby 使用 self 来表示 this。我不太确定您是否需要使用 self 来解决您的问题。

第一个场景可以重写为:

u = User.find_by_email(params[:candidate][:email]).try(:id) || 'not here'

第二个场景可以重写为:

user = User.find_by_email(params[:candidate][:email])
a += 1 if user.present?

Ruby uses self to denote this. I am not quite sure if you need to use self for your problems.

First scenario can be rewritten as:

u = User.find_by_email(params[:candidate][:email]).try(:id) || 'not here'

Second scenario can be rewritten as:

user = User.find_by_email(params[:candidate][:email])
a += 1 if user.present?
放肆 2024-12-24 03:54:37

我猜您的情况更惯用的 ruby​​ 方法将类似于以下内容:

User.where("email in (?)", email_arr).each do |user|
    a += 1
    user.foo = bar
end

但如果没有看到所有代码,就很难说。

I'm guessing the more idiomatic ruby approach for your case would be something like the following:

User.where("email in (?)", email_arr).each do |user|
    a += 1
    user.foo = bar
end

but it's hard to say without seeing the all code.

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