模型属性获得可视化变量

时间:2013-11-07 17:19:20

标签: ruby-on-rails ruby

class User < ActiveRecord::Base
  before_validation :ensure_login_has_a_value

  validates :login, :email, presence: true

  protected
    def ensure_login_has_a_value
      if login.nil?
        self.login = email unless email.blank?
      end
    end
end

为什么会有效但

protected
  def ensure_login_has_a_value
    if login.nil?
      #self.login = email unless email.blank?
      # the change  
      login = email unless email.blank?
    end
  end

不起作用?

2 个答案:

答案 0 :(得分:1)

在第二个中,

  login = email unless email.blank?

创建本地变量调用login并为其分配email

第一个实际上将它分配给模型的属性。

答案 1 :(得分:-1)

当您使用login时 - 它使用ActveRecord提供的getter,如果您想使用login=,则应将登录声明为attr_accessible