0

我正在为一个分成多个引擎的 Rails 项目执行 rake 任务。该任务位于Railslib/tasks应用程序的文件夹中,并试图从引擎 ( ) 创建一个新的。PostBlogengines/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 任务编写代码,但找不到任何具体的东西。有任何想法吗?

4

1 回答 1

1

你的创造!应该接受一个块来执行分配,你所拥有的是做分配然后将结果作为参数传递。

post = Blog::Post.create! do |post|
    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
于 2013-02-16T00:06:16.933 回答