将关注点模块添加到模型

Add concerns module to Model

我有一个名为 Person 的模型 class。 人 class 有一个名为 car 的属性。

现在我想在关注模型中定义一个名为 Person::Car::HasProducer

的模块

该模块应如下所示:

module HasProducer

   def produced_by_toyota?
     car == "Prius"
   end

   def produced_by_bmw?
     car == "X3" || car == "X5"
   end 
end

我想在以下位置找到此文件:concerns/person/car/has_producer.rb

Person-class 中,我尝试像这样包含它:

class Person
  include Person::Car::HasProducer

但是我得到了错误:Unable to autoload constant Person::Car::HasProducer

我尝试了 modules/classes 的不同组合,但 none 星座对我有用。

我必须做什么才能使 has_producer.rb 被发现为 Person::Car::HasProducer

要么定义你的模块以匹配命名空间 Person::Car::HasProducer 即如下所示:

class Person
  module Car
    module HashProducer
        # your code here
    end
  end
end

include HasProducer