ActiveModel :: AttributeMethods实用性?

时间:2012-11-09 02:10:31

标签: ruby-on-rails ruby ruby-on-rails-3

开发人员在哪些情况下会遇到使用rails AttributeMethodsPrefix和后缀方法的理想情况。 以下内容直接来自Rails源码,我仍然不确定它们的实用性。

  #   class Person
  #     include ActiveModel::AttributeMethods
  #
  #     attr_accessor :name
  #     attribute_method_suffix '_short?'
  #     define_attribute_methods :name
  #
  #     private
  #
  #     def attribute_short?(attr)
  #       send(attr).length < 5
  #     end
  #   end
  #
  #   person = Person.new
  #   person.name = 'Bob'
  #   person.name          # => "Bob"
  #   person.name_short?   # => true

感谢您的帮助;)

1 个答案:

答案 0 :(得分:1)

例如,这用于提供<attribute>_changed?方法以及ActiveModel::Dirty

中的其他帮助程序

如何在代码中使用它取决于您。您可以使用此方法轻松提供email_taken?username_taken?方法,以检查用户输入的电子邮件或用户名是否仍然可用。

我想你可以考虑在你想要了解模型的几个属性(或者可能跨模型)时使用它。

您发布的示例对我来说并没有多大意义,因为它仅用于一个属性。如果他们使用:first_name:last_name构建示例,那么您可以构建可重用的辅助方法更清楚,这些方法只需要定义一次。