小编gmo*_*iey的帖子

rails rake任务是否可以访问ActiveRecord模型?

我正在尝试创建自定义rake任务,但似乎我无法访问我的模型.我认为这是rails任务中隐含的内容.

我在lib/tasks/test.rake中有以下代码:

namespace :test do
  task :new_task do
    puts Parent.all.inspect
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我的父模型的样子:

class Parent < ActiveRecord::Base
  has_many :children
end
Run Code Online (Sandbox Code Playgroud)

这是一个非常简单的例子,但我收到以下错误:

/> rake test:new_task
(in /Users/arash/Documents/dev/soft_deletes)
rake aborted!
uninitialized constant Parent

(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢

rake activerecord ruby-on-rails task

224
推荐指数
5
解决办法
5万
查看次数

jquery-rails和jquery-ujs之间的区别

我已经google了一下,但还是无法弄清楚两者之间的确切差异.从jquery-rails上读到我(https://github.com/indirect/jquery-rails)似乎jquery-ujs补充了它,但我不确定为什么/如何.

如果有人可以打破这一点,我将不胜感激.

谢谢.

jquery ruby-on-rails-3

33
推荐指数
2
解决办法
2万
查看次数

获取ActiveModel :: Callbacks以使用ActiveResource

我试图让ActiveModel :: Callbacks与ActiveResource(特别是after_initialize)一起使用Rails 3应用程序,但我似乎无法让它工作.我没有得到任何错误,但回调方法永远不会执行.

这是一段代码

class User < ActiveResource::Base
  extend ActiveModel::Callbacks
  define_model_callbacks :initialize, :only => :after

  after_initialize :update_info

  def update_info
    puts 'info'
  end 
end
Run Code Online (Sandbox Code Playgroud)

出于某种原因,从不执行update_info.任何人都知道如何让这个工作?

activeresource activemodel ruby-on-rails-3

7
推荐指数
1
解决办法
2126
查看次数

在rake任务中缓存的ActiveRecord模型?

我知道在rails 2.3.2中缓存了ActiveRecord查询,即您可能会在开发/生产日志中看到一些内容:

CACHE (0.0ms)   SELECT * FROM `users` WHERE `users`.`id` = 1
Run Code Online (Sandbox Code Playgroud)

我想知道相同的原则是否适用于rake任务.

我有一个rake任务,它将查询许多不同的模型,我想知道我是否应该实现自己的缓存,或者默认情况下是否包含此行为.

另外,有没有办法查看在rake任务期间执行的sql查询?与开发/生产日志类似

rake activerecord ruby-on-rails

6
推荐指数
1
解决办法
1452
查看次数

rails3资产管道和文件冲突

我正在将现有的rails 2应用更新到rails 3,并且在理解资产管道时遇到一些麻烦.我已经阅读了指南,据我了解,以下任何目录中的文件都将解析为/ assets:

  • 应用程序/资产
  • LIB /资产
  • 供应商/资产

并且您可以使用帮助程序访问它们...即

image_tag('logo.png')
Run Code Online (Sandbox Code Playgroud)

但我不明白的是如何处理碰撞?例如,如果有以下文件,该怎么办:

  • 应用程序/资产/图像/ logo.png
  • LIB /资产/图像/ logo.png

如果我去myapp.com/assets/images/logo.png,将返回哪个文件?我可以在我的应用程序中手动检查碰撞,但这在使用依赖资产管道的宝石时成为一个痛点.

ruby-on-rails-3 asset-pipeline

6
推荐指数
1
解决办法
350
查看次数

ActiveRecord Migration&Rake任务没有加载模型?

我知道你可以做这样的事情来加载rails环境:

  task :my_task => :environment do 
    MyModel.find(1)
  end
Run Code Online (Sandbox Code Playgroud)

但似乎模型中的代码没有执行.我正在使用acts_as_audited,并且有一个很好的类函数可以检索所有正在审计的模型.电话看起来像:

Audit.audited_classes
Run Code Online (Sandbox Code Playgroud)

要将模型指定为可审核,只需将此行添加到模型中:

acts_as_audited
Run Code Online (Sandbox Code Playgroud)

当在控制台中执行audited_classes时,我得到一个包含所有审计类的数组; 但是,当我从rake任务(或迁移)中执行它时,我得到一个空数组.

[编辑]

在玩了一下之后,我注意到如果模型在被引用之前没有被实际加载(即延迟加载).我认为在配置中将cache_classes设置为true会解决这个问题,但它们似乎仍然是延迟加载的.

一种可能的解决方案是遍历所有模型(如本文所述:有没有办法在Rails应用程序中获取所有模型的集合?)但这看起来有点hacky,我希望有一个清洁的方式.

有任何想法吗?

谢谢

migration rake activerecord ruby-on-rails

5
推荐指数
1
解决办法
1645
查看次数

Flex 3关闭UrlLoader抛出异常

我正在尝试使用UrlLoader模拟'HEAD'方法; 本质上,我只想检查文件是否存在而不下载整个文件.我想我只会使用HttpStatusEvent,但是当您在调试模式下运行时,以下代码会抛出异常(我无法在try/catch块中包装).

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()">
<mx:Script>
    <![CDATA[

       private static const BIG_FILE:String = "http://www.archive.org/download/gspmovvideotestIMG0021mov/IMG_0021.mov";

       private var _loader:URLLoader;

       private function init():void {
            _loader = new URLLoader();
            _loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, statusHandler);
            _loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            _loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
            _loader.load(new URLRequest(BIG_FILE));   
       }

       public function unload():void { 
            try {
                _loader.close();
                _loader.removeEventListener(HTTPStatusEvent.HTTP_STATUS, statusHandler);
                _loader.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler);
                _loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
            }
            catch(error:Error) {
                status.text = error.message;
            }
        }

        private function errorHandler(event:Event):void {
            status.text = "error";
            unload();
        }

        private function statusHandler(event:HTTPStatusEvent):void {
            if(event.status.toString().match(/^2/)) {
                status.text = "success";
                unload();
            }
            else {
                errorHandler(event);
            }
        } …
Run Code Online (Sandbox Code Playgroud)

apache-flex urlloader actionscript-3

4
推荐指数
1
解决办法
3718
查看次数

Rails - 可以在通用rake任务中运行迁移方法吗?

我知道这不是最佳实践,并且很可能甚至不应该使用,因为迁移的用途是什么,但我想知道是否可以在常规rake任务中执行特定于迁移的命令.就像是:

namespace :dummy do
    task :update => :environment do
      add_column :users, :deleted, :boolean, { :null => false, :default => false }
   end
end
Run Code Online (Sandbox Code Playgroud)

谢谢

migration rake ruby-on-rails

4
推荐指数
2
解决办法
825
查看次数

从另一个视图调用帮助器

我知道如果我想调用另一个控制器的助手,我可以这样做:

helper :other_controllers
Run Code Online (Sandbox Code Playgroud)

但我想知道为什么我不能在视图中做像OtherControllersHelper.method这样的事情?

ruby-on-rails

1
推荐指数
1
解决办法
2122
查看次数