[英]How to properly define getters for class variables in Ruby?
我决定写一些有关Rails模型的小文章,使我的模型易于使用。 此问题提供了可用于重新定义段塞柱的方法。 目前可以使用,但是我不确定我的代码是否没有味道。 首先,我想知道是否可以使用任何快捷方式为类变量定义getter。
可能应该重构我的代码。 它去了:
module Sluggable
extend ActiveSupport::Concern
included do
extend FriendlyId
slug_with :name
def should_generate_new_friendly_id?
slug.blank? || sluggable_attribute_changed?
end
def sluggable_attribute_changed?
public_send("#{self.class.sluggable_attribute}_changed?")
end
end
module ClassMethods
def slug_with(attribute)
@sluggable_attribute = attribute
apply_friendly_id(@sluggable_attribute)
end
def apply_friendly_id(sluggable_attribute)
friendly_id sluggable_attribute, use: %w(slugged history)
end
def sluggable_attribute
@sluggable_attribute
end
end
end
当我使用rubocop
gem时,会收到有关sluggable_attribute
类方法的警告,并注意我使用的应将attr_reader
用于平凡的读取器方法。
请告知我如何改进代码以适应Ruby和Rails约定。
谢谢!
由于您处于Rails的上下文中,因此我建议您使用'class_attribute'方法( 此处为doc )。 我认为最适合Rails宝石。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.