我尝试将我的模型User
作为Rails引擎分开,以便在多个应用程序中使用它。
为实现这一目标,我使用rails plugin new engine_name --full
创建了一个引擎,以便我可以使用所有路由和模型而无需安装在隔离的命名空间中。
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
scope :find_user, ->(id) { where(id: id)}
def self.say_hello(str)
puts "Welcome #{str}"
end
end
这是我的User
模型。它未在模块中命名空间,因为引擎是使用--full
创建的。
我可以成功地将其包含在任何Rails应用程序中并可以访问路由。
我可以访问类方法:
2.1.5 :015 > User.say_hello("ferdy")
Welcome ferdy
但是当我尝试调用create
类方法时,我收到一个错误:
User.create(email:"ferdsfd@sdfds.com",password:12345678)
ActiveRecord::StatementInvalid: Could not find table 'users'
答案 0 :(得分:0)
实际上我不会将整个模型与gem隔离开来,因为它取决于你的app的架构。我建议您将User
模型的常用方法与问题分开,将关注点移到gem上,并将其包含在您需要的应用模型中。