120得票8回答
如何确定记录在 after_save 中是新创建的还是更新的?

#new_record?函数用于判断记录是否已保存,但在after_save钩子中,它总是返回false。有没有办法确定记录是新创建的还是从更新修改的旧记录? 我希望不使用另一个回调函数,如before_create在模型中设置标志或要求对数据库进行另一个查询。 任何建议都将不胜感激。 ...

79得票8回答
获取ActiveRecord对象属性的类型

我想知道是否可以通过编程方式获取类型(如AR所知-例如在迁移脚本和数据库中),我知道数据在那里某处存在。 例如,我可以处理所有属性名称:ar.attribute_names.each { |name| puts name } .attributes 只返回当前名称到值的映射(例如,如果未设置...

71得票3回答
Active Model、Active Record和Active Resource之间的区别

有没有人能够帮助我定义Active Model、Active Record和Active Resource之间的确切区别呢?我已经做了足够的谷歌搜索,但没有找到任何确切的东西,可以告诉我它们之间的确切区别。目前它们看起来都一样。请给我一个适当的答案,并提供一些具体的要点。

65得票4回答
LoadError:无法自动加载常量Message

在我的应用程序中,当我提交表单时,出现以下错误: LoadError at /questions Unable to autoload constant Message, expected /app/models/message.rb to define it 它指向Questions控...

58得票8回答
部署后出现ActiveModel :: MissingAttributeError错误,一段时间后错误消失。

我有一个Rails 3.0.9应用程序,一旦它被部署,就会出现大量的ActiveModel :: MissingAttributeErrors,导致500错误。这些错误有时候会随机出现,有时候页面可以正常加载,有时候不行,但是这些属性都是数据库中已存在的属性,应该能够找到。 奇怪的是,在一段...

54得票5回答
控制Rails验证的顺序

我有一个Rails模型,用户通过表单填写了其中的7个数字属性。 我需要验证每个属性是否存在,这显然很容易使用以下方法:validates :attribute1, :presence => true validates :attribute2, :presence => true...

50得票5回答
从模型获取验证

如何获取模型中定义的验证列表 示例:class ModelName validates_presence_of :field_name validates_inclusion_of :sex, :in => %w(M F) end 我需要类似于哈希的东西:{:field_nam...

47得票5回答
如何使用ActiveModel::Serializers为同一模型实现多个不同的序列化器?

假设你正在Rails中实现一个REST API。在提供集合时,可能只想包含少量属性:/people 但是当提供单个资源时,您想要包括所有属性:/people/1 我不知道如何使用ActiveModel::Serializers实现这一点,因为所有的例子都使用定义一个模型对应一个序列化器的模式(...

45得票7回答
如何测试自定义验证器?

我有以下验证器:# Source: http://guides.rubyonrails.org/active_record_validations_callbacks.html#custom-validators # app/validators/email_validator.rb cla...

44得票5回答
在Rails 4中遇到了一个之前需要使用attr_accessible的情况,会出现禁止属性错误(Forbidden Attributes Error)。

随着最近对Rails 4的升级,使用类似以下代码来更新属性将不起作用,并会出现ActiveModel::ForbiddenAttributes错误: 由于新版Rails默认启用了Strong Parameters,需要在控制器中指定参数名才能接受参数。要解决这个问题,需要在控制器中添加参数白...