0

我的模型中有这样的方法Post

def self.post_template
    posts = Post.all
    result = []

    posts.each do |post|
        single_post = {}
        single_post['comment_title'] = post.comment.title
        single_post['comment_content'] = post.comment.content

        result << single_post
    end

    # return the result
    result
end

在我的一项 rake 任务中,我调用了该函数:

namespace :post do
    task :comments => :environment do
        comments = Post.post_template
        puts comments
    end
end

在控制台中,返回值不是Array; 相反,它打印由换行符分隔的所有哈希:

{ 'comment_title' => 'stuff', 'comment_content' => 'content' }
{ 'comment_title' => 'stuff', 'comment_content' => 'content' }
{ 'comment_title' => 'stuff', 'comment_content' => 'content' }

但是,当我在我的 中运行它时rails console,我得到了预期的行为:

> rails c
> comments = Post.post_template
-- [{ 'comment_title' => 'stuff', 'comment_content' => 'content' }, 
   { 'comment_title' => 'stuff', 'comment_content' => 'content' }]

不用说,我很困惑,会喜欢任何形式的指导!谢谢你。

编辑:

似乎 rake 任务只是像这样打印出数组,但是当我将数组的结果设置为另一个哈希时,它似乎并没有保持数组的完整性:

namespace :post do
    task :comments => :environment do
        comments = Post.post_template

        data = {}
        data['messages'] = comments
    end
end

我正在使用Mandrill(plugin for Mailchimp) 创建这些消息,它会抛出一个错误,指出我传入的不是Array.

4

1 回答 1

1

我认为这就是 rake 打印数组的方式。尝试这个:

task :array do
    puts ["First", "Second"]
end

现在:

> rake array
First
Second
于 2012-09-12T17:03:33.413 回答