小编rob*_*okl的帖子

如何评估年,月和日(红宝石)的日期差异?

我必须在两个日期之间做一个简单的区别:

Date.parse("2009-06-20") - Date.today
Run Code Online (Sandbox Code Playgroud)

这给了我几天的日期差异.

任何人都知道一种方法可以轻松地将其转换为以下格式:

The event occurred X years, Y months and Z days ago
Run Code Online (Sandbox Code Playgroud)

谢谢.

ruby ruby-on-rails

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

如何在单表继承中运行子类的验证?

在我的应用程序中,我有一个名为Budget的类.预算可以是多种类型.例如,假设有两个预算:FlatRateBudget和HourlyRateBudget.两者都继承自预算班.

这是我到目前为止所得到的:

class Budget < ActiveRecord::Base
  validates_presence_of :price
end

class FlatRateBudget < Budget
end

class HourlyRateBudget < Budget
  validates_presence_of :quantity
end
Run Code Online (Sandbox Code Playgroud)

在控制台中,如果我这样做:

b = HourlyRateBudget.new(:price => 10)
b.valid?
=> false
b.errors.full_messages
=> ["Quantity can't be blank"]
Run Code Online (Sandbox Code Playgroud)

正如所料.

问题是STI上的"类型"字段来自params ..所以我需要做类似的事情:

b = Budget.new(:type => "HourlyRateBudget", :price => 10)
b.valid?
=> true
Run Code Online (Sandbox Code Playgroud)

这意味着rails在超类中运行验证,而不是在我设置类型后实例化子类.

我知道这是预期的行为,因为我正在实例化一个不需要数量字段的类,但我想知道是否还有告诉rails运行子类的验证而不是super.

validation activerecord ruby-on-rails single-table-inheritance

13
推荐指数
2
解决办法
7734
查看次数

自动完成与下拉.什么时候用?

我读过一篇关于Web可用性的文章(不记得/找不到哪里),描述了何时使用下拉菜单以及何时使用自动填充字段.

基本上,文章说人类大脑不能存储超过最后五个选项供选择.

例如,在一个配置文件表单中,当前的职业存在,系统为您提供了一系列选项,当您阅读第六个选项时,您的大脑将不再记住第一个选项.这个例子是一个使用自动填充字段的好地方,用户输入他认为是他职业的东西,然后从过滤的几个选项中选择更好的东西.

我想听听你对这个问题的看法.

我应该何时使用下拉列表以及何时使用自动填充字段?

usability user-interface combobox autocomplete

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

如何用Python模拟一个类?

我是Python的新手,但我曾经和Ruby一起工作.

我正在尝试用Python做一些测试,但我无法弄清楚我是如何为我的测试模拟一个类.

假设我有这个真正的课程:

from database import DB
class Foo:
  def do_it(self):
    x = {'key': 'value'}
    DB.save(x)
    # do other stuff with x
    return x
Run Code Online (Sandbox Code Playgroud)

现在,我想测试我用x做的所有事情是否给我正确的结果,我想测试是否用x作为参数调用DB.save,但我不想将x实际保存到数据库.要查看是否正在调用DB.save,我可以使用一些模拟框架,但是如何告诉Foo类我需要它来使用模拟对象而不是真正的数据库对象?

谢谢.

编辑: 对不起,我的例子不足以完成我需要完成的任务.

让我们看看这个新例子:

from database import DB
class Foo:
  DB.connect()
  def do_it(self):
    x = {'key': 'value'}
    DB.save(x)
    # do other stuff with x
    return x
Run Code Online (Sandbox Code Playgroud)

例如,假设数据库已关闭.

当我导入Foo时,它会引发连接错误,我没有时间模拟DB.

我该怎么办??

python testing

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