我正在为一个分成多个引擎的 Rails 项目执行 rake 任务。该任务位于Rails主lib/tasks
应用程序的文件夹中,并试图从引擎 ( ) 创建一个新的。Post
Blog
engines/blog/app/models/post
引擎文件 ( blog/lib/blog/engine.rb
) 如下所示:
module Blog
class Engine < ::Rails::Engine
isolate_namespace Blog
end
end
所以如果我理解正确,引用Blog::ModelHere
是正确的语法。这是 rake 任务:
namespace :blog do
desc "Import blog posts from old Wordpress site"
task :import => :environment do
# ... generating variables here
post = Blog::Post.create!(
post.title = title,
post.slug = title.parameterize,
post.date = date,
post.user_id = User.find_by_name(user).id,
post.content = content,
post.tags = tags
)
end
end
返回...
undefined method 'title=' for nil:NilClass
它似乎在Blog::Post
通话中窒息。我也试过::Blog::Post
了,但这似乎没有多大意义。我也尝试将其blog/lib/tasks
作为引擎任务保留,但我也无法使其正常工作。
我环顾了 SO 和 Github,看看是否有人为引擎中的 rake 任务编写代码,但找不到任何具体的东西。有任何想法吗?