Ruby Ruby 中 attr_accessor 定义实例变量

sec · February 16, 2017 · Last by sec replied at February 20, 2017 · 1824 hits

关于 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 closed this topic. 20 Feb 10:11
You need to Sign in before reply, if you don't have an account, please Sign up first.