如何使用Ruby on Rails在初始化器中调用应用模型



我是Ruby on Rails的新手,我正在使用Ruby 2.1.0和Rails 4.0.2

My Query is:-

我想在初始化器中调用Model

my Model file is setting。模型rb 名称设置。它的位置是app/model目录。

我想在初始化器文件paypal.rb中调用Setting Model

贝宝。config/initializers/paypal.rb.

请帮助如何在Ruby on Rails中的初始化器中调用Model

在运行这个初始化器之前,要确保所有其他初始化器都运行了吗?如果是这样,你可以这样做:

# config/initializers/paypal.rb
Rails.configuration.after_initialize do
  paypal_settings = Setting.find_by(name: "paypal")
  # do something with paypal settings...
end

为了解决这个问题,我这样做了:

  1. 首先检查表是否存在。
  2. 然后检查我的记录是否存在。

这是一种hack,但它适用于我的用例。

if ActiveRecord::Base.connection.table_exists? :settings # check if table exists
  if Setting.first.present? # check if first record has been seeded
    NUMBERS = Setting.first.my_numbers.split(",")
  else
    NUMBERS = '987654321'
  end
else
  NUMBERS = '123456789'
end

如果数据库不存在,上述解决方案在rake db:migraterake db:bootstrap上仍然会失败。在我的情况下,构建在circleCI上失败了。

下面的解决方案对我来说是正确的。

# /app/config/initializers/settings.rb
db_loaded = ::ActiveRecord::Base.connection_pool.with_connection(&:active?) rescue false
if db_loaded && Setting.table_exists?
// business logic
end

在rails中,无论您在哪里,都可以与model交互。像

Setting.method_name()

在rails应用程序中,您可以创建自己的新文件夹(除了rails新命令创建的默认目录),并且可以与Model方法交互。

相关内容

  • 没有找到相关文章

最新更新