这出现了一段时间(在db中没有相应列的rails模型属性)但是看起来没有提到所提到的Rails插件(http://agilewebdevelopment.com/plugins/activerecord_base_without_table).有没有办法用ActiveRecord这样做?
如果没有,有没有办法在不使用ActiveRecord的情况下获得ActiveRecord验证规则?
当然,ActiveRecord希望表存在.
我有一个rails应用程序的默认时区设置.和Date对象的一个实例.
如何让Date#beginning_of_day返回指定时区内的一天的开头,而不是我当地的时区.
是否有其他方法可以在给定日期的指定时区内开始白天时间?
date = Date.new(2014,10,29)
zone = ActiveSupport::TimeZone.new('CET')
date.foo(zone) # should return "Wed, 29 Oct 2014 00:00:00 CET +01:00"
zone = ActiveSupport::TimeZone.new('UTC')
date.foo(zone) # should return "Wed, 29 Oct 2014 00:00:00 UTC +00:00"
Run Code Online (Sandbox Code Playgroud) 我在Rails 2.3.8上运行一个应用程序.我打算将它升级到Rails 4.0(在RC中).对我来说最简单的方法是什么?我是否需要先升级到Rails 3.x?
我有一个需要在SSL下运行的Rails应用程序.我尝试了ssl_requirement,但似乎我必须输入每个控制器中的所有操作.
是否有任何方法可以在应用程序控制器中使用ssl_requirement添加before_filter,以便当用户请求在http时,应用程序将自动重定向到https?
谢谢大家.:)
我环顾四周,找不到任何答案.涉及的所有答案都没有使用GROUP BY.
背景: 我有一个paginator,它将为ActiveRecord.find提供选项.它添加了:limit和:offset选项并执行查询.我还需要做的是计算记录总数(减去限制),但有时查询包含:group选项,ActiveRecord.count尝试返回GROUP BY返回的所有行及其每个计数.我在Rails 2.3.5中这样做.
我想要的是ActiveRecord.count返回GROUP BY返回的行数.
下面是一些示例代码,用于演示此实例(用于查找所有标记并按照标记的帖子数量排序):
options = { :select => 'tags.*, COUNT(*) AS post_count',
:joins => 'INNER JOIN posts_tags', #Join table for 'posts' and 'tags'
:group => 'tags.id',
:order => 'post_count DESC' }
@count = Tag.count(options)
options = options.merge { :offset => (page - 1) * per_page, :limit => per_page }
@items = Tag.find(options)
Run Code Online (Sandbox Code Playgroud)
使用:select选项,Tag.count生成以下SQL:
SELECT count(tags.*, COUNT(*) AS post_count) AS count_tags_all_count_all_as_post_count, tags.id AS tags_id FROM `tags` INNER JOIN posts_tags GROUP BY tags.id ORDER …Run Code Online (Sandbox Code Playgroud) 每当两个并发HTTP请求转到我的Rails应用程序时,第二个总是返回以下错误:
ApplicationController的副本已从模块树中删除但仍处于活动状态!
从那里它给出了一个无益的堆栈跟踪效果"我们经历了标准服务器的东西,在ApplicationController上运行了你的第一个before_filter (我检查过;它只是先运行哪个过滤器) ",然后提供以下内容:
/home/matchu/rails/torch/vendor/rails/activesupport/lib/active_support/dependencies.rb:414:in"load_missing_constant'
/home/matchu/rails/torch/vendor/rails/activesupport/lib/active_support/dependencies.rb:96:in`const_missing'
我假设是一个通用的回应,并没有真正说太多.
谷歌似乎告诉我,开发Rails引擎的人会遇到这种情况,但我不这样做.我所做的就是将我的Rails应用程序从2.2(2.1?)升级到2.3.
导致此错误的可能原因是什么,以及如何跟踪实际发生的情况?我知道这个问题很模糊,所以其他任何信息都有帮助吗?
更重要的是:我刚刚尝试在"生产"环境中进行测试,并且错误似乎不会持续存在.那么这只会影响发展吗?我不需要太担心吗?
我有一个直接继承的模型ActiveResource::Base,我正在尝试运行alias_method记录表中的大多数列,但结果是一个NameError:
NameError:未定义的方法
address_line_1' for classLeadImport :: Base'
但我可以访问该属性:
LeadImport::Base.new.address_line_1 #=> nil (not error)
Run Code Online (Sandbox Code Playgroud)
我的类有一个名为table的列address_line_1,所以我没有看到问题所在.
class LeadImport::Base < ActiveRecord::Base
alias_method :address_1, :address_line_1
end
Run Code Online (Sandbox Code Playgroud)
规范:Ruby 1.8.7,Rails 2.3.8
我正在修补一个Rails引擎,例如:
SomeClass.class_eval do
# ...
end
Run Code Online (Sandbox Code Playgroud)
我第一次访问网站时,至少在开发模式下,它可以工作,但第二次就像我的补丁从未存在过.我认为它是Rails自动重新加载引擎(安装在vendor /中)而不是重新加载我的代码.这是Rails 2.3.
任何想法如何做到这样我的代码也被重新加载?
我有一个代理模型,它从底层数据库表中获取其属性.但是对于一个特定的控制器操作,我想在将代理记录传递给视图之前向代理记录添加一些"临时"属性.
这可能吗?
我最近每次更改代码时都开始重新启动开发服务器.我的development.rb文件仍然有这一行:
config.cache_classes = false
我尝试使用调试器验证此值是否已停留.为此,我将配置设置为environment.rb中的全局变量:
$my_initializer = Rails::Initializer.run do |config| ... end
然后我debugger在我的一个控制器中放了一条线,所以我可以这样做:
(rdb:2) $my_initializer.configuration.cache_classes false
这样就消除了将价值cache_classes设定在true其他地方的可能性.我已经尝试过使用Mongrel和WEBrick,但它仍然会发生.
还有什么可能导致Rails不能在每次请求时重新加载我的代码?
我正在运行:Mongrel 1.1.5
WEBrick 1.3.1
Rails 2.3.8
Ruby 1.8.7 p253
编辑:在@Daemin的建议下,当我将它们保存在我的文本编辑器(Textmate)中时,我检查了我的文件的mtime实际上是否正在更新
merced:controllers lance$ ls -l people_controller.rb -rwxr-xr-x 1 lance staff 2153 Act 10 18:01 people_controller.rb
然后我做了一个更改并保存了文件:
merced:controllers lance$ ls -l people_controller.rb -rwxr-xr-x@ 1 lance staff 2163 Oct 11 12:03 people_controller.rb
所以这不是mtimes的问题.