3

我有一个用户模型 =>@user

我想添加新属性current_time@user供临时使用。

不想迁移来添加列(仅供临时使用):

@user.current_time = Time.now

有什么办法可以做到这一点?

NoMethodError (undefined method `current_time=' for #<User:0x007fd6991e1050>):
  app/controllers/carts_controller.rb:47:in `block in search_user'
  app/controllers/carts_controller.rb:45:in `search_user'
4

2 回答 2

5

attr_accessor will set up a reader and writer for the instance variable:

class Foo
  attr_accessor :current_time
end

foo = Foo.new
foo.current_time = Time.now   # Writes value
foo.current_time              # Reads value

You might also be interested in attr_reader and attr_writer.

于 2013-10-23T09:33:56.633 回答
0

尝试在 User.model 中定义几个方法:

def current_time= (time)
  @current_time = time
end

def current_time
  @current_time
end

根据kristinalim的正确评论,UPD

请注意,attr_accessible作为框架的一部分,在 Rails 4 中已弃用。现在使用强参数代替。同时 getter/setterattr_accessor是核心 Ruby 的一部分并且照常工作。

attr_accessible和之间的区别在这篇文章attr_accessor中得到了很好的解释

于 2013-10-23T09:33:00.270 回答