我的模型中有这样的方法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
.