ruby-on-rails – Rails 4关注点:将类实例变量赋予模型

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails 4关注点:将类实例变量赋予模型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
对于Rails问题,我可以通过包含它们来通过模块提供我的模型类方法和实例方法.我发现没有博客条目或帖子提到我如何在我的模型中包含变量.

具体来说,我想给我的包含模型一个类实例变量@question,但我不知道在模块中将声明放在何处以便应用它.如果模型本身声明该变量,我还希望覆盖类实例变量.

ActiveSupport :: Concern模块是否真的关心变量?

  1. module ContentAttribute
  2. extend ActiveSupport::Concern
  3.  
  4. def foo
  5. p "hi"
  6. end
  7.  
  8. module ClassMethods
  9.  
  10. # @question = "I am a generic question." [doesn't work]
  11.  
  12. def bar
  13. p "yo"
  14. end
  15. end
  16. end
  17.  
  18. class Video < ActiveRecord::Base
  19. include ContentAttribute
  20.  
  21. # @question = "Specific question"; [should override the generic question]
  22. end

解决方法

  1. module ContentAttribute
  2. extend ActiveSupport::Concern
  3.  
  4. included do
  5. self.question = "I am a generic question."
  6. end
  7.  
  8. module ClassMethods
  9. attr_accessor :question
  10. end
  11.  
  12. end

那么,在视频中……

  1. class Video < ActiveRecord::Base
  2. include ContentAttribute
  3. self.question = "Specific question"
  4. end

猜你在找的Ruby相关文章