【发布时间】:2016-03-06 15:09:56
【问题描述】:
我正在构建一个在迁移中使用外键的 Rails 引擎。
add_foreign_key "theblog_content_nodes",
"theblog_content_statuses", column: :content_status_id
从4.2 版本开始,rails 本身支持外键,但在我们使用foreigner gem 之前。如果我们尝试将foreigner 与rails 4.2 和更新版本一起使用,则会出现错误。
因此,由于我要从 4.0.1 开始支持 rails,我必须在我的 gemspec 中使用条件依赖。
我找到了可能的解决方案 here,但我不知道如何在 gemspec 中检查 rails 版本。
# sidekiq-spy.gemspec
if RUBY_VERSION >= '2.1'
spec.add_development_dependency "curses", "~> 1.0"
end
注意:
我有另一个临时解决方案:我只是在迁移中检查Foreigner 的可用性。如果它不可用,我只是不创建外键:
if defined?(Foreigner)
add_foreign_key "theblog_content_nodes",
"theblog_content_statuses", column: :content_status_id
end
但我想为旧的 rails 版本添加 foreigner 依赖项。
【问题讨论】:
-
您是否考虑过为该场景提供两个不同版本的 gem?
-
@iltempo,我什至可以在两种情况下都使用一个版本。只需添加注意,如果 Rails 版本小于
4.2并且我们想使用外键,我们必须将gem "foreigner"添加到Gemfile。