2016-03-27 5 views
1
  1. を更新するrollingbackあるので、私はこのcのレールを実行しようとしたRailsのではなく、

    Borrower.update(1, raised: 0) 
    
  2. と私は背中とロールを取得しますこれは:

    Borrower Load (0.3ms) SELECT "borrowers".* FROM "borrowers" WHERE "borrowers"."id" = $1 LIMIT 1 [["id", 1]] 
    
    (0.2ms) BEGIN 
    Borrower Exists (0.5ms) SELECT 1 AS one FROM "borrowers" WHERE (LOWER("borrowers"."email") = LOWER('[email protected]') AND "borrowers"."id" != 1) LIMIT 1 
    
    (0.2ms) ROLLBACK 
    
    "table with raised = 0" 
    1 row in set 
    
  3. これです"借入人" のための私のモデルである:

    class Borrower < ActiveRecord::Base 
    has_many :lenders 
    has_many :histories, dependent: :destroy 
    has_many :borrowed_from, through: :histories, source: :lender 
    EMAIL_REGEX = /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]+)\z/i 
    validates :first_name, :last_name, :email, :purpose, :description, :money, presence: true 
    validates :email, uniqueness: {case_sensitive: false}, format: {with: EMAIL_REGEX} 
    
    has_secure_password 
    end 
    
  4. と私のスキーマ:

    create_table "borrowers", force: :cascade do |t| 
    
    t.string "first_name" 
    t.string "last_name" 
    t.string "email" 
    t.string "password_digest" 
    t.integer "money" 
    t.string "purpose" 
    t.text  "description" 
    t.integer "raised" 
    t.datetime "created_at",  null: false 
    t.datetime "updated_at",  null: false 
    end 
    
  5. どのように私は永久に "上げ" を更新していますか?

答えて

2

それはあなたのコンソール上の検証エラーを印刷しようと、検証が失敗した可能性があります:

borrower = Borrower.update(1, raised: 0) 
puts borrower.errors 

別の解決策を明示的に検証をスキップしたい場合はupdate_attribute次のようになります。

Borrower.find(1).update_attribute(:raised, 0) 

さらに、コールバックをスキップしてupdated_atに触れないようにしたい場合は、update_column

もあります。
Borrower.find(1).update_column(:raised, 0) 

raisedはブール属性の一種である場合もtoggle!のために行くことができます:

Borrower.find(1).toggle!(:raised) 
+0

感謝を! "Borrower.find(1).update_attribute(:raised、0)"が機能しました! –

関連する問題