【问题标题】:How can I rename methods with metaprogramming?如何使用元编程重命名方法?
【发布时间】:2016-02-26 19:05:25
【问题描述】:

我的个人资料模特有五张照片。我想让它干燥。我有这个代码:

@profile.picture1 = set_selfies(params[:profile]["picture#{1}"])

我有一个处理图像/自拍 xP 的方法,但任何图片都是我的Profile 对象的属性。如何使用元编程动态重命名@profile.picture1picture2、...picture 5

【问题讨论】:

  • 我认为你被否决了,因为你没有像在这种情况下那样使用正确的一对多关系。如果您想以正确的方式执行此操作,您需要创建一个表pictures,其中包含profile_id 和一个模型Picturebelongs_to :profileProfilehas_many :pictures。您确实需要更深入地了解 OO 编程的概念,以便更好地理解您要解决的问题的最佳解决方案。 railscasts.com 是一个很好的起点
  • spickermann 几乎做到了。如果您使用的示例确实是您所做的事情的扩展,那么元编程就有点像用大锤敲击图钉。
  • 还有迈克所说的。
  • 你有道理,但是应用是u.u这种形式构建的,我单身可以重构代码

标签: ruby-on-rails ruby


【解决方案1】:

在这种情况下send 使用字符串插值似乎是最简单的解决方案:

(1..5).each do |i|
  @profile.send("picture#{i}=", set_selfies[:profile]["picture#{i}"])
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 2014-01-13
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    相关资源
    最近更新 更多