如何检查rails 3中字段的字段类型是什么

Sab*_*osh 5 ruby ruby-on-rails

我有一个用户模型.喜欢

class User < ActiveRecord::Base
  attr_accessor :username :campaign_id
  attr_accessible :name, :email, :username
end
Run Code Online (Sandbox Code Playgroud)

如果我获取一个用户记录,如

u = User.first
Run Code Online (Sandbox Code Playgroud)

它会回来

#<User id: 190, name: "sa", :email: "abc@gmail.com", username: "ab">
Run Code Online (Sandbox Code Playgroud)

所以问题是:有没有办法检查一个属性,例如'name'是attr_accessor还是attr_accessible?

nat*_*vda 2

如果我理解正确的话,该设备attr_accessor :password会将您的密码字段隐藏在数据库中。为了避免这个问题,你可以做类似的事情

def raw_password
  self[:password]
end

def raw_password= (new_password)
  self[:password] = new_password
end
Run Code Online (Sandbox Code Playgroud)

当然,这完全忽视了这样一个事实:将密码以明文形式存储在数据库中并不是很安全。Devise 为用户提供了足够的机制来管理自己的密码,因此您不应该将原始密码保留太长时间。