首页 > 解决方案 > 忽略 ActiveRecord 属性的存在?

问题描述

有没有一种优雅的方法来告诉 Rails 假装某个特定代码块的属性不存在?我正在对 ActiveRecord 模型进行一些元编程,它可能定义了也可能没有定义特定属性。我试图弄清楚如何测试未定义属性的情况。

标签: ruby-on-railsrspec

解决方案


是的!ActiveRecord::AttributeMethods#has_attribute?

true如果给定的属性在属性哈希中,则返回,否则false我可以将其称为类或实例方法。例如

MyModel.has_attribute? :attribute_name
MyModel.first.has_attribute? :attribute_name

请参阅API 文档参考has_attribute?

更好的是:

您可以使用普通的旧红宝石method_defined?

请参阅API 文档参考method_defined?


推荐阅读