Rails引擎与--full选项模型

时间:2015-07-21 13:19:17

标签: ruby-on-rails ruby-on-rails-3 rails-engines

我尝试将我的模型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'

1 个答案:

答案 0 :(得分:0)

实际上我不会将整个模型与gem隔离开来,因为它取决于你的app的架构。我建议您将User模型的常用方法与问题分开,将关注点移到gem上,并将其包含在您需要的应​​用模型中。