忽略ActiveRecord属性的存在



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

是!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?

最新更新