Rails 3动态添加虚拟属性

Bob*_*Bob 9 ruby activerecord ruby-on-rails ruby-on-rails-3

我的设置:Rails 3.0.9,Ruby 1.9.2

我有理由这样做,但我需要的是一种动态添加虚拟属性到activerecord结果集的方法.这意味着我没有attr_accessor在模型中使用,而是希望动态地将虚拟属性添加到结果集中.

例如,

users = User.all
#a user has following attributes: name, email, password
Run Code Online (Sandbox Code Playgroud)

我喜欢做的是说增加(不使用attr_accessor)虚拟属性statususers,这可能吗?

apn*_*ing 15

你应该做这个:

users.each do |user|
  user.instance_eval do
    def status
      instance_variable_get("@status")
    end        
    def status=(val) 
      instance_variable_set("@status",val)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

  • @Tilo:你显然不知道什么是虚拟属性 (6认同)