0

私は、複数のエンジンに分割されているRailsプロジェクトのレーキタスクに取り組んでいます。タスクはメインlib/tasksのRailsアプリケーションのフォルダーにあり、エンジンから新しいものを作成しようとしています( )。PostBlogengines/blog/app/models/post

エンジンファイル(blog/lib/blog/engine.rb)は次のようになります。

module Blog
  class Engine < ::Rails::Engine
    isolate_namespace Blog
  end
end

したがって、私が正しく理解していれば、参照Blog::ModelHereは正しい構文です。レーキタスクは次のとおりです。

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 に答える