0

私は次のモデルを持っています

class User < ActiveRecord::Base
  VALID_EMAIL_REGEX = /^.+@.+\..+$/i 
  attr_accessible :active_list_id, :password, :password_confirmation, :email, :temp
  has_secure_password
  before_create { generate_token(:auth_token) }
  if :temp.nil?
    before_validation :downcase_email
    validates_presence_of :email, :password, :password_confirmation, :on => :create
    validates_confirmation_of :password
    #something@something.something
    validates :email, :uniqueness => true, 
              :format => {:with => VALID_EMAIL_REGEX }
  end
  after_create { make_list([email,"'s shopping list"].join('')) }

  has_many :shopping_lists
  has_many :transactions, :class_name => 'Order'

  HUMANIZED_ATTRIBUTES = {
    :password_digest => "Password"
  }
  ...
end

User.create(:temp => true)(これはブール値であり、移行/スキーマで定義されています) を呼び出して、Rails コンソールでモデルを作成しようとしています。ただし、常にトランザクションをロールバックします。私は何を間違っていますか?

また、3 つの検証すべてに対して:if => temp.nil?and if => "temp.nil?" andを実行してみました。:if => lambda { |user| user.temp.nil? }

4

1 に答える 1

0

temp_is_nil というメソッドを作成しますか? それをif条件で使用します

def temp_is_nil?
  temp.nil?
end

temp がユーザーの属性であることを確認してください。

before_validation :downcase_email, if: temp_is_nil?
validates_presence_of :email, :password, :password_confirmation, :on => :create, if: temp_is_nil?
validates_confirmation_of :password, if: temp_is_nil?
validates :email, :uniqueness => true, 
          :format => {:with => VALID_EMAIL_REGEX }, if: temp_is_nil?
于 2013-03-10T11:04:31.783 に答える