问题标签 [ruby-on-rails-4.2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mongodb - 虽然我在数据库中有记录,但它给出了“Mongoid::Errors::DocumentNotFound”
虽然我有 id 为 13163 ( db.locations.find({_id: 13163})
) 的记录,但它给了我错误:
Mongoid::Errors::DocumentNotFound in LocationsController#show
问题:找不到 ID 为 13163 的 Location 类的文档。 摘要:当使用 ID 或 ID 数组调用 Location.find 时,每个参数必须与数据库中的文档匹配,否则将引发此错误。搜索 id(s):13163 ...(共 1 个),但未找到以下 id:13163。解决方法:搜索数据库中的 id 或将 Mongoid.raise_not_found_error 配置选项设置为 false,这将导致在搜索单个 id 时返回 nil 而不是引发此错误,或者在搜索多个时仅返回匹配的文档。
位置控制器.rb:
设置选项raise_not_found_error: false
并非如此,因为我在数据库中有一个文档。
解决方案:
非常感谢@mu 太短了,无法给我提示。
该问题可以通过两种方式解决:
field :_id, type: Integer
在模型中声明location.rb
- 或者将传递参数转换为 Integer 如下所示
Location.find(params[:id].to_i)
@mu的答案太短locations_controller.rb
ruby-on-rails - 在 Rails 中添加可为空的外键
参考 Rails 4.2 add_foreign_key支持:
如何创建一个可以为空的外键约束,在允许的情况下,哪里articles.author_id
可以有时为空?
ruby-on-rails - Rails 4.2 Web 控制台问题
升级到 Rails 4.2 后,我很高兴尝试新集成的 Web 控制台,但我遇到了一些问题。
在 Rails 4.2 的发行说明中,它提到:“使用 Rails 4.2 生成的新应用程序现在默认带有 Web Console gem。”
由于我升级到 4.2,我认为这意味着我仍然必须在我的 Gemfile 中指定它。如果不将它添加到我的 Gemfile 中,rails 只会给我“未定义的局部变量或方法‘控制台’”,所以我认为是这样。
一旦我将 gem 'web-console', '~> 2.0' 添加到 Gemfile,并运行 rails 服务器,我现在得到:
我用谷歌搜索并没有找到太多。任何意见是极大的赞赏。
谢谢!
ruby-on-rails - 如何使用 Rails 读取器方法缓存覆盖属性访问器?
许多 gem 使用如下代码覆盖 Rails 的属性访问器:
或这个:
Rails 4.2 为属性方法引入了缓存(AttributeMethodCache
, ReaderMethodCache
, https://github.com/rails/rails/pull/15429)
当使用上述方法访问被覆盖的属性时,这会导致错误的值。看起来原始读取器方法的返回值即使在覆盖该方法后也被缓存并返回。
在 Rails 4.2 中覆盖属性访问器的推荐过程是什么?
ruby-on-rails - Rails 4.2 弃用警告:`serialized_attributes` 已被弃用,无需替换,
在大多数控制器测试中,我(每个人)都会看到这个警告。我知道这只是一个警告……现在……直到 5 发布。我不确定我需要更改哪些内容才能遵守此弃用。serialized_attributes 发生了什么变化?我想让这个警告消失并改进我的代码,为 5.0 做准备……但不确定如何继续。谢谢。
更新
从控制器测试中执行标准更新操作时...我收到错误消息:
在测试中(为本示例浓缩):
该测试通过了,但现在在 rails 4.2 中出现错误:DEPRECATION WARNING: serialized_attributes
is deprecated without replacement,并将在 Rails 5.0 中删除。”
那么,在这个例子中……是 serialized_attributes “{ name: 'Passport' }”吗?
ruby-on-rails - 无法连接 localhost:3000 ruby on rails in vagrant
我试图在 Windows 中连接 localhost:3000
rails 服务器在 vagrant 中运行(ubuntu 14.10)
端口转发完成
什么时候,我
lynx 127.0.0.1:3000
在 ubunutu 中尝试过,它有效
但是,在 Windows 中,我也无法连接 localhost:3000, 127.0.0.1:3000
刚刚显示 ERR_CONNECTION_REFUSED
在cmd中,我运行netstat -t
的结果是:3000 TIME_WAIT
我怎么解决这个问题?
这是我的“流浪文件”
编辑:我尝试了 Host-only 网络适配器,我尝试在主机中连接 192.168.33.10:3000 仍然无法连接。一件奇怪的事情,我可以在主机中发送 Ping 到 192.168.33.10 并得到回复。我不知道问题是什么。我很困惑。有人帮助我,请:(
ruby-on-rails - “第一的!” AR CollectionProxy 在从 Rails 4.1.4 更新到 4.2.0 后引发“未定义的方法 [] for nil”
我开始从 Rails 4.1.4 升级到 Rails 4.2.0。好像是第一个!某些活动记录关联不再支持。
(在 ActiveRecord::Associations::CollectionProxy 上)发生了什么first!
导致它现在失败?
如何修复该行为,使其像 4.1.4 一样工作?
导轨 4.1:
导轨 4.2:
更新
深入研究 ActiveRecord,我发现它在这里失败了:
loaded?
返回 true,但 @records 为零。投入调试器并调用find_nth_with_limit(offset, 1).first
会返回我期望的记录。
first!
在活动记录中的 finder_methods.rb 中定义问题似乎是协会认为它已加载,但@records 为 nil
ruby-on-rails - NameError: 未初始化的常量 ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition
生成 rails 4.2.0 应用程序并添加 activerecord-postgis-adapter 并相应地编辑 database.yml 文件。
但是现在当我这样做时rake db:create
,它会出现错误:
ruby-on-rails - 将功能齐全的 Rails 4.1.7.1 升级到 4.2 时出现日期时间和时区问题
我的 rails 4.1.7.1 应用程序运行良好。至少,我想要的方式。但是,在升级到 4.2(使用官方升级指南)后,我遇到了一些问题。
第一的。使用 DateTime.parse 会引发错误:'undefined method `getlocal'。代码是:
为了解决这个问题,我改用了 Time.parse 或 Time.zone.parse。这修复了错误。然而,一个新的问题出现了。我的 start_time 和 end_time 变量提前一小时得到填充。这样 08:15 就变成了 09:15。
这是我的 app.rb 配置:
无论我尝试什么组合,我的事件仍然提前一小时。
有趣的是,在创建计划之后,这将返回零计划:
但是,这将返回正确的行:
我想我的问题是:为什么 rails 4.2 在日期和时间方面与具有相同代码库的 4.1.7.1 表现如此不同?什么是补救措施?
ruby-on-rails - 如何在 Rails 中添加将在 rake test:db:prepare 之后运行的任务
我正在使用 rails 4.2,我正在尝试使用命令 rake test 运行测试。我正在尝试使用 plv8 扩展,所以我从 psql 控制台手动创建它,然后当我运行测试时,它似乎已经从 postgres 中删除了该扩展. 我查看了 rails 4.2 项目,我注意到他们带来了 test:db: prepare。这就是每次删除 plv8 扩展的原因。如何添加一段将在 test:db:prepare 或 test:db:create 之后运行的代码?
我不是修改 Rakefile 解决方案的忠实粉丝。