我有一个rake任务,使用faker gem为随机数据播种应用程序.但是,我们还要在此rake任务中上传图像(如徽标).
我们已经设置了Paperclip,但没有办法在rake任务中以编程方式上传它们.有任何想法吗?
将逻辑从控制器转移到模型中是一种很好的做法.但是在任何复杂的系统中,即使大多数方法按照Rails方式是一个衬里,这也总是导致一个非常大的文件.
我使出车型分裂成其他模块和包括他们在原来的模式,例如model_flags,model_validation等任何人有更好的办法?
编辑:我选择了一个建议使用ActiveConcern的新答案.此外,对于任何对组织代码感兴趣的人,本文" 使ActiveRecord模型变薄 "应该会有很大帮助.
我想在Ruby on Rails应用程序中记录用户的操作.
到目前为止,我有一个模型观察器,它在更新和创建后将日志插入数据库.为了存储哪个用户执行了记录的操作,我需要访问会话,但这是有问题的.
首先,它打破了MVC模型.其次,技术范围从hackish到outlandish,甚至可能甚至将实现绑定到Mongrel服务器.
什么是正确的方法?
我正在尝试在Windows Vista上安装bcrypt-ruby.
到目前为止,我已经能够从安装Visual Studio 2008 Express的MS知识库文章和cl.exe安装nmake.exe.
但是,我现在遇到这个错误:
cl -nologo -Wall -I. -IC:/InstantRails/ruby/lib/ruby/1.8/i386-mswin32 -I
C:/InstantRails/ruby/lib/ruby/1.8/i386-mswin32 -I. -MD -Zi -O2b2xg- -G6 -c -Tcb crypt.c
cl : Command line warning D9035 : option 'Og-' has been deprecated and will be removed in a future release
cl : Command line warning D9002 : ignoring unknown option '-G6' bcrypt.c
C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\stdio.h(381) : warning C4255: '_get_printf_count_output' : no function prototype given: converting '()' to '(void)'
C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\stdlib.h(215) : …Run Code Online (Sandbox Code Playgroud) 打开一个Rails控制台并输入:
2.weeks.ago.between? 2.weeks.ago, 1.week.ago
Run Code Online (Sandbox Code Playgroud)
它给你的真假吗?不,真的,再试几次,它会给你不同的答案.
现在,我在想,因为我们将2.weeks.ago与2.weeks.ago进行比较,评估两个语句之间的时间是导致这种行为的.
我不能肯定地说,但我猜是介于两者之间?方法不包括在内,因此如果在两个语句之间经过几毫秒,上面的代码将评估为true,因为它将在两个日期之间进行比较.
但是,如果CPU设法足够快地处理这个,以便可以忽略经过的时间,那么它将评估为false.
任何人都可以对此有所了解吗?在一个可能很关键的系统中,这是一个最好的边缘情况,但是当我的测试通过并且看似随机失败时,它让我很头疼.
奇怪的是,这样做不会发生:
Date.yesterday.between? Date.yesterday, Date.tomorrow
Run Code Online (Sandbox Code Playgroud)