我是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
为了解决这个问题,我这样做了:
- 首先检查表是否存在。
- 然后检查我的记录是否存在。
这是一种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:migrate
或rake 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方法交互。