当方法名称是动态时,如何在 Ruby 中调用方法? [复制]

2024-01-11

@video = Video.new
thumb = "video_thumbnail"
@video_thumbnail = @video.video_thumbnail  ## works fine 
@video_thumbnail = @video.thumb            ## undefined method `thumb'

我怎样才能打电话给video_thumbnail动态方法?


在 Ruby 中,您可以使用send http://ruby-doc.org/core-2.0/Object.html#method-i-send与此类似:

thumb = :video_thumbnail
@video_thumbnail = @video.send(thumb)

但是,您应该意识到这种方法的潜在安全隐患。如果内容thumb变量可以由用户以任何方式控制(例如,通过从params),任何用户都可能对您的视频对象调用任意方法。鉴于 Rails 中存在大量元编程,您可以轻松地以这种方式调用和运行任意代码。因此,您应该确保严格控制该内容thumb多变的。

如果可能,您应该使用其他方式来调用这些方法,例如通过使用单独的控制器操作和正确的路由来调用它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当方法名称是动态时,如何在 Ruby 中调用方法? [复制] 的相关文章

随机推荐