2017-08-25 116 views
0

我已经把我的一个大项目分割成了可挂载的rails引擎,并且我想找到一个方法来检查是否安装了rails引擎。 作为一个例子,我有一个用户类我主要的应用程序布尔检查是否安装了导轨引擎?

user.rb

class User < ApplicationRecord 
    has_many :searches, as: :searchable, class_name: MySearchEngine::Search 
end 

我想换在if语句此的has_many协会以及发动机整合其他代码所以,它只有MySearchEngine已安装

+0

多久你安装/卸载,你需要检查它是否亩发动机nted?或者,你是否更愿意将代码保存在模型中的不同块中,在这种情况下,可以将用户的所有关联包括在内,比如说一个“MySearchEngine :: UserConcerns”模块,或者包含它。您还可以查看[自定义配置](http://guides.rubyonrails.org/configuring.html#custom-configuration)并为您的应用设置配置值以包含/不包含的内容 –

+0

只有一次,但只要我查看了所有引用引擎的地方,如果引擎未被安装,就需要注释掉,我开始研究这个问题。如何在示例中使用配置值? – mkrinblk

回答

0

添加代码,您应该能够检查它们是否可以通过defined? MySearchEngine::Search

+0

我在使用erb的视图中遇到了麻烦。如果我使用此方法在引擎中定义的链接标记中添加了引擎中定义的路径,则该块内部的链接标记仍会被评估并给出未定义的局部变量或方法'my_search_engine'的错误。理想情况下,标签不会被评估,因为它位于if块内部。所以对于视图可能需要一种不同的方法。我认为这在我的控制器和模型中起作用。 – mkrinblk