Ruby Ruby 中 attr_accessor 定义实例变量

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

关于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
共收到 3 条回复

可以这么理解吧

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
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册