Rails 4 个问题:给模型 class 个实例变量
Rails 4 concerns: Give class instance variables to model
考虑到 Rails 问题,我可以通过包含它们来通过模块提供我的模型 class 方法和实例方法。不过,我发现没有任何博客条目或线程提到如何在我的模型中包含变量。
具体来说,我想给我的包含模型一个 class 实例变量 @question
,但我不知道将声明放在模块中的什么地方,所以它被应用了。如果模型本身声明了该变量,我还希望覆盖 class 实例变量。
ActiveSupport::Concern
模块真的关心变量吗?
module ContentAttribute
extend ActiveSupport::Concern
def foo
p "hi"
end
module ClassMethods
# @question = "I am a generic question." [doesn't work]
def bar
p "yo"
end
end
end
class Video < ActiveRecord::Base
include ContentAttribute
# @question = "Specific question"; [should override the generic question]
end
module ContentAttribute
extend ActiveSupport::Concern
included do
self.question = "I am a generic question."
end
module ClassMethods
attr_accessor :question
end
end
然后,在视频中...
class Video < ActiveRecord::Base
include ContentAttribute
self.question = "Specific question"
end
考虑到 Rails 问题,我可以通过包含它们来通过模块提供我的模型 class 方法和实例方法。不过,我发现没有任何博客条目或线程提到如何在我的模型中包含变量。
具体来说,我想给我的包含模型一个 class 实例变量 @question
,但我不知道将声明放在模块中的什么地方,所以它被应用了。如果模型本身声明了该变量,我还希望覆盖 class 实例变量。
ActiveSupport::Concern
模块真的关心变量吗?
module ContentAttribute
extend ActiveSupport::Concern
def foo
p "hi"
end
module ClassMethods
# @question = "I am a generic question." [doesn't work]
def bar
p "yo"
end
end
end
class Video < ActiveRecord::Base
include ContentAttribute
# @question = "Specific question"; [should override the generic question]
end
module ContentAttribute
extend ActiveSupport::Concern
included do
self.question = "I am a generic question."
end
module ClassMethods
attr_accessor :question
end
end
然后,在视频中...
class Video < ActiveRecord::Base
include ContentAttribute
self.question = "Specific question"
end