我正在尝试找出在Ruby on Rails中捕获抛出的特定错误和错误消息的最佳方法。我的用例是,我偶尔会遇到一个超时错误,它被抛出一个通用错误,我希望将超时错误与同一通用错误中的其他错误区别对待。我不确定在一般错误中还会抛出什么其他类型的错误,但我假设存在更多的错误。我在下面有一些示例代码,说明我目前是如何处理它的,但我在想,可能还有更好的方法,但我还没有找到?
tries = 0
begin
tries += 1
<code>
rescue Foo::Bar => e
case e.to_s
when 'More specific timeout e
我使用的是Rails3和mongoid 2,我有一个关于mongoid验证的简单问题。
if @forum.topics.create!(name: params[:topic][:name])
# success, do something
else
#should handle errors but doesn't
render 'new'
end
如果我使用.create!方法时,它会正确地在mongoid模型类上运行验证,但不会转到else块来显示错误。相反,它返回一个rails错误页面,上面写着...
TopicsController#cre
我使用的是rails 2.3.8和邦德勒宝石。
我刚刚安装了Faker gem (Gemfile),然后突然间所有表单验证错误都变成了这样:
{{count}} errors prohibited this {{model}} from being saved
There were problems with the following fields:
* {{attribute}} {{message}}
* {{attribute}} {{message}}
似乎变量没有正确地打印出来。
什么会导致Rails中的这种行为?如果我需要留住Faker,从哪里开始解决这个
以下是使用Ruby计算Excel公式的代码。这里只显示了SUM函数。我用两种语言Ruby和Python实现了这个函数 Python 3.10.0 def SUM(a,b):
return a+b
for i in range(int(input())):
s=input()
if s[0]!="=":
print("INVALID")
else:
try:
print(eval(s.replace('=','')))
exc
我正在尝试通过上传一个随机生成的文件到他们的域名根目录来验证用户是否有权控制我的Rails3应用程序中的某个域名(就像谷歌对谷歌应用程序所做的那样)。目前我使用的是Net::HTTP,如果地址是有效的,它似乎可以工作,但是如果地址无效,我会得到这个错误。
getaddrinfo: nodename nor servname provided, or not known
有没有一种方法可以忽略这个错误,或者有一种更好/不同的方法来编写控制器的代码?
def check
require 'net/http'
require 'uri'
result =
我有一个create方法,它通过关联构建一个新模型,如果POST请求中没有参数,我希望它返回一个带有一些文本的400响应。但是,我得到了一个错误。
这是在Rails 4.0.2中实现的
控制器方法:
def create
@cast_profile = current_user.build_cast_profile(cast_profile_params)
if @cast_profile.save
redirect_to cast_profile_path
else
render :edit
end
end
def cas
我正在阅读Michael Hartl的Rails教程,特别是第6章:
在user.destroy命令后执行User.find(1)后,我得到以下错误消息:
ruby-1.9.2-p290 :006 > User.find(1)
ActiveRecord::RecordNotFound: Couldn't find User with ID=1
from /Users/me/.rvm/gems/ruby-1.9.2-p290@rails3/gems/activerecord-3.0.9/lib/active_record/relation/finder_methods.r
我希望能够重定向从mongoid错误引发的输出。我在以下布局中有一些简单的代码:
begin
[ruby code here to query database]
rescue [Moped Exception here] => e
puts e.message
end
当发生错误时,我会以以下格式获取它:
Moped::Errors::ConnectionFailure: Could not connect to a primary node for replica set <Moped::Cluster nodes=[<Moped::Node resolved_a
我正在尝试将rails应用程序从5.2版更新到6版。我从bundler那里收到了奇怪的错误消息。 当我将gemfile中的rails版本更改为6,然后运行bundle update时,我得到了一系列类似以下的消息: Bundler could not find compatible versions for gem "activerecord":
In Gemfile:
rails (= 6.0) was resolved to 6.0.0, which depends on
activerecord (= 6.0.0)
seed_dump
我是一个RoR初学者,我是从RoR教程开始学习的。实际上,我在这一章()并尝试安装rspec。但每次我尝试使用"rails g rspec:install“时,我都会收到这个错误消息:
C:\Sites\rails\rails_projects\sample_appp>rails g rspec:install
C:/Sites/rails/rails_projects/sample_appp/config/application.rb:8:in `require':
no such file to load -- sprockets/railtie (LoadError
我想向该表添加一个表和一个外键。最初我有:
class VirtualMachine(models.Model):
...
然后我将其更改为:
class OperatingSystem(models.Model):
name = models.CharField(max_length=40)
def __unicode__(self):
return self.name
class VirtualMachine(models.Model):
operating_system = models.ForeignKey(OperatingSyst
我有一个accepts_nested_attributes_for课程的老师模型。如果klass中有用户,并且我想打印验证消息,我不希望能够删除klass。
这就是我所拥有的。
class Teacher < ActiveRecord::Base
accepts_nested_attributes_for :klasses, :reject_if => proc { |a| a['name'].blank? }, :allow_destroy => true
end
class Klass < ActiveRecord::Base
b
我使用的是Rails5和HTTParty。
问题是,如果API由于某种原因而关闭,我的应用程序就会崩溃。我想要处理这种情况,并找到了几个解决方案,但没有让他们工作。
我所做的是:
begin
api = HTTParty.get(URL)
rescue HTTParty::Error
puts('API not available')
end
我所希望的是,如果API关闭或如果我使用无效的URL,它不会给我一个内部服务器错误,但告诉我API不可用,并继续执行代码。
但它却给出了和内部服务器错误:
SocketError (Failed to open TCP con
当我尝试导航到/admin时。如果没有用户登录并且有非管理员用户登录,则Cancancan将引发执行。我希望被重定向至登录屏幕-如果登录成功,则进入rails_admin控制面板。
请看下面,我现在的代码/配置,如果你需要更多信息,请告诉我:
/app/models/ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user && user.admin?
在一个Rails5电子商务站点中,来自经典购物车模型的购物车并没有因为写得不好的代码而被销毁,所以现在heroku数据库中有超过10000行的空购物车。如果我从heroku控制台销毁它们,下一次已经访问该站点但在购买过程中放弃的用户将尝试访问该站点,他将收到如下所示的404错误:
ActiveRecord::RecordNotFound (Couldn't find Cart with 'id'=305)
很明显是因为饼干。heroku DB已超出其分配的存储容量,因此我需要销毁空的购物车。(并修复代码,但这不是这里的问题)。有没有办法顺利地做到这一点呢?
class