【发布时间】:2012-07-30 19:04:15
【问题描述】:
我正在将我的应用程序的一部分提取到 Gem 中,这涉及创建一些新的 ActiveRecord 模型。目前这些模型看起来像这样:
Class Wordcount < ActiveRecord::Base
belongs_to :keyword
belongs_to :article
end
Class Keyword < ActiveRecord::Base
has_many :wordcounts
has_many :articles, :through => :wordcounts
end
gem 将连接到任何带有字符串或文本字段的 ActiveRecord 模型,而不仅仅是我在现有 Rails 应用程序中定义的Article 模型,该代码来自该应用程序。
我需要做什么才能根据 gem 的功能应用到的模型生成相关的 AR 关联?我希望最终得到:
has_my_gem_functionality :on => [:field1, :field2, ...]
并将其余部分安全地封装在 gem 中。
我假设我还必须对迁移进行元编程。我认为我想做的事情相对简单,只是离我的舒适区有点太远了。
【问题讨论】:
-
您能否更具体地说明此 gem 可能需要进行哪些迁移?
-
因此迁移在很大程度上将独立进行:向
wordcounts和keywords表添加列。他们还需要用于连接到的表的外键,即目前的:article。我实际上对此不确定,抱歉:当您有belongs_to或has_many关联时,哪些表(或两者?)需要外键?
标签: ruby-on-rails ruby activerecord gem metaprogramming