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有这样的东西吗?
答案 0 :(得分:3)
在课程的上下文中,您使用self
。
在这些情况下,虽然此代码不在User
上下文中,因此您必须进行分配。
u = User.find_by_email(params[:candidate][:email])
user_name = u.any? ? u.name : 'not here'
我更喜欢.any?
到.present?
,因为它读得更好。
答案 1 :(得分:2)
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?
答案 2 :(得分:1)
我猜你的案例中更惯用的ruby方法将如下所示:
User.where("email in (?)", email_arr).each do |user|
a += 1
user.foo = bar
end
但如果没有看到所有代码,很难说。