新手问题 自己写的 rake 中为什么 model 不能调用?

kitt · 2013年04月23日 · 最后由 zhangyanan 回复于 2014年02月12日 · 3666 次阅读

我自己写了一个 rake 命令,有 user 这个 model,在 rails c 中可以正常调用,可是执行 rake 命令的时候就不能,也就说同样的代码放在 rails c 中完全能执行,在 rake 中就不行了。

#-- encoding : utf-8 -- desc "add bbs sort values" task :bbs_sort_values do

BbsSort.all.each { |bs| bs.destroy } end

比如如上代码 报错信息是

rake aborted! uninitialized constant BbsSort

说的是没有定义 BbsSort 这个类啊,跟 User 有什么关系?

额。是我说错了,user 只是举例而已,下边的代码是实际代码,就是那些删除 bbs 分类的代码放在 rails c 中是没问题的,model 是没问题的。

没有加载 Rails 环境。

确定?

rakefile 中有这句话 require File.expand_path('../config/application', FILE) 所以在 rails 目录下都加载 rails 环境吧

task :task_name => :environment do # do something end

@raecoo 问题解决了,谢谢啊,加这句话就是加载 rails 环境吗?那 rakefile 里的那句话又是什么意思呢

#7 楼 @kitt 帮你写了一个 environment 的 task,若你想要使用 model,需要依赖这个 task,也是就上面的做法。

def initialize_tasks #:nodoc:
  self.class.rake_tasks do
    require "rails/tasks"
    task :environment do
      $rails_rake_task = true
      require_environment!
    end
  end
end

http://erik.debill.org/2011/12/04/rake-for-rails-developers

@zgm thank you,看一下

#7 楼 @kitt 他加的这句 :environment 是加载 rails 环境?你弄懂了就分享一下

需要 登录 后方可回复, 如果你还没有账号请 注册新账号