1
我決定寫小Rails模型,讓我的模型變得呆滯。 這個問題提供了可用於重新定義子彈柱的方法。 目前它的工作原理,但我不知道如果我的代碼沒有味道。 首先,我想知道是否可以使用任何快捷方式爲類變量定義getter。如何在Ruby中正確定義類變量的getters?
可能我的代碼應該重構。這裏有雲:
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
寶石我得到sluggable_attribute
類方法與我用應該使用attr_reader
爲了微不足道的讀者方法通知警告。
請告訴我應該如何改進我的代碼以適應Ruby和Rails約定。
謝謝!
可以爲實例變量定義訪問器,而不是類變量。我假設你指的是類實例變量,你應該使用它來代替類變量。爲類實例變量定義訪問器的正常方式如下所示:'class << self; attr_accessor var; end'。另請參閱[cattr_accessor](http://apidock.com/rails/Class/cattr_accessor)。 – 2014-08-30 20:18:19