向AR对象添加变量

时间:2009-11-21 18:36:50

标签: ruby-on-rails ruby activerecord object

如何将变量添加到ActiveRecord返回的一组对象中?我环顾四周,我见过的所有方法似乎都没有用。

提前致谢!

1 个答案:

答案 0 :(得分:3)

问题含糊不清,可以用两种方式解释。

  1. 将变量添加到列表中。

    list_of_objects_returned_by_activeRecord << variable
    

    这看起来太简单了,可能不是你想要的。

  2. 为列表中的每个项目添加变量。

    假设您在谈论模型的实例,最简单的方法是在模型中添加attr_accessor。

    class Model < ActiveRecord::Base
      ...
      attr_accessor :new_attribute
    end
    

    您可能希望在加载模型时将其设置为某个值,因此您希望向模型添加after_initialize方法。例如,以下内容将为每个加载的用户添加nick_name属性,并将其默认为其first_name后缀用“-O”。

    class User < ActiveRecord::Base
      ...
      attr_accessor :nick_name
      def after_initialize
        self.nick_name = first_name + "-O"
      end
    end
    
    @user = User.first
    @user.first_name # => "Steve"
    @user.nick_name # => "Steve-O"
    @user.nick_name = "Tiny" # sets nick_name to "Tiny".
    @user.first_name # => Still "Steve"