ruby-on-rails - Rails 4 关注 : Give class instance variables to model

标签 ruby-on-rails ruby ruby-on-rails-4 activesupport-concern

考虑到 Rails,我可以通过包含它们来通过模块提供我的模型类方法和实例方法。不过,我发现没有任何博客条目或线程提到如何在我的模型中包含变量。

具体来说,我想给我的包含模型一个类实例变量 @question,但我不知道将声明放在模块中的什么地方,所以它会被应用。如果模型本身声明了该变量,我还希望重写类实例变量。

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

关于ruby-on-rails - Rails 4 关注 : Give class instance variables to model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28989588/

相关文章:

ruby - 如何正确设置 rubocop 大小写缩进

twitter-bootstrap - 在 Devise 上注册时堆栈级别太深

javascript - 如何使用动态变量名调用 Angular 范围?

ruby-on-rails - Rails.env 在测试中返回 'development' 导致设计真实性 token 破坏测试?

mysql - ActiveRecord 在保存时引发异常,但在 Rails 中没有发生任何爆炸

mysql - 如何通过单个 SQL 查询检索同一个数据库表中的 "common"条记录?

ruby-on-rails - 为什么在 rails 中使用 _form.html.erb

ruby-on-rails - Rails 如何为每个元素构建具有不同 url 的面包屑?

jquery - 使用 Cocoon jQuery 回调嵌套表单隐藏和显示 div

ruby-on-rails - ZenTest 自动测试不运行测试