我在阅读图像裁剪上的导轨时遇到了这个问题,原始代码就像(删除了不相关的代码):
class User < ActiveRecord::Base
attr_accessor :crop_x, :crop_y, :crop_w, :crop_h
def cropping?
!crop_x.blank? && !crop_y.blank? && !crop_w.blank? && !crop_h.blank?
end
end
正如你在这里看到的,像 :crop_x 这样的东西已经被定义和检查了四次。这是相当多余的。
因此,我想我可以定义一个符号数组,如下所示:
class User < ActiveRecord::Base
_cropset = :crop_x, :crop_y, :crop_w, :crop_h
_cropset.each {|attr| attr_accessor attr}
def cropping?
# How to properly reference to a variable from attribute..?
end
end
但正如你所看到的......我被困在上面的评论部分。
我认为像上面的代码一样手动检查所有这些变量不是一个好习惯。但是我应该如何改进这段代码,以及如何使用符号引用变量?