Ruby Ruby 中 attr_accessor 定义实例变量

sec · 2017年02月16日 · 最后由 sec 回复于 2017年02月20日 · 1824 次阅读

关于 ruby 存取器 attr_accessor

class User
  attr_accessor :name
 def greet
   puts"Hi ,I'm #{self.name}!"
 end
end

但是在 rails 中却可以省略 attr_accessor,因为 User 表中存在 name 字段?还是?

class User < ActiveRecord::Base
 def greet
   puts"Hi ,I'm #{self.name}!"
 end
end

可以这么理解吧

ActiveRecord 会读取数据库的结构,动态产生那些方法

attr_accessor 这个应该用来做虚拟变量,比如你数据库中只有 name 这个字段,但是你在 form 中是希望他输入 first_name 和 last_name。即这个虚拟属性属于这个 model 的一部分,但是不需要单独建字段来储存的这种变量。

#model

attr_accessor: first_name, last_name
self.name = "#{self.first_name} #{self.last_name}"

这样就可以保存 name 了

sec 关闭了讨论。 02月20日 10:11
需要 登录 后方可回复, 如果你还没有账号请 注册新账号