Merge 3c01fe791514d7064791a17d8b067106866d1e2f into 34e75afb42007629e18aea20ed6722f151e62553
This commit is contained in:
		
						commit
						47f4915cfc
					
				@ -252,7 +252,7 @@ func runMigration() {
 | 
			
		||||
		DB.Exec(fmt.Sprintf("drop table %v;", table))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	values := []interface{}{&Short{}, &ReallyLongThingThatReferencesShort{}, &ReallyLongTableNameToTestMySQLNameLengthLimit{}, &NotSoLongTableName{}, &Product{}, &Email{}, &Address{}, &CreditCard{}, &Company{}, &Role{}, &Language{}, &HNPost{}, &EngadgetPost{}, &Animal{}, &User{}, &JoinTable{}, &Post{}, &Category{}, &Comment{}, &Cat{}, &Dog{}, &Toy{}}
 | 
			
		||||
	values := []interface{}{&Short{}, &ReallyLongThingThatReferencesShort{}, &ReallyLongTableNameToTestMySQLNameLengthLimit{}, &NotSoLongTableName{}, &Product{}, &Email{}, &Address{}, &CreditCard{}, &Company{}, &Role{}, &Language{}, &HNPost{}, &EngadgetPost{}, &Animal{}, &User{}, &JoinTable{}, &Post{}, &Category{}, &Comment{}, &Cat{}, &Dog{}, &Toy{}, &ElementWithIgnoredField{}}
 | 
			
		||||
	for _, value := range values {
 | 
			
		||||
		DB.DropTable(value)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								scope.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								scope.go
									
									
									
									
									
								
							@ -835,7 +835,7 @@ func convertInterfaceToMap(values interface{}) map[string]interface{} {
 | 
			
		||||
			}
 | 
			
		||||
		default:
 | 
			
		||||
			for _, field := range (&Scope{Value: values}).Fields() {
 | 
			
		||||
				if !field.IsBlank {
 | 
			
		||||
				if !field.IsBlank && !field.IsIgnored {
 | 
			
		||||
					attrs[field.DBName] = field.Field.Interface()
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
@ -419,6 +419,37 @@ func TestUpdatesWithBlankValues(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type ElementWithIgnoredField struct {
 | 
			
		||||
	Id           int64
 | 
			
		||||
	Value        string
 | 
			
		||||
	IgnoredField int64 `sql:"-"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (e ElementWithIgnoredField) TableName() string {
 | 
			
		||||
	return "element_with_ignored_field"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestUpdatesTableWithIgnoredValues(t *testing.T) {
 | 
			
		||||
	elem := ElementWithIgnoredField{Value: "foo", IgnoredField: 10}
 | 
			
		||||
	DB.LogMode(true)
 | 
			
		||||
	DB.Save(&elem)
 | 
			
		||||
 | 
			
		||||
	DB.Table(elem.TableName()).
 | 
			
		||||
		Where("id = ?", elem.Id).
 | 
			
		||||
		// DB.Model(&ElementWithIgnoredField{Id: elem.Id}).
 | 
			
		||||
		Updates(&ElementWithIgnoredField{Value: "bar", IgnoredField: 100})
 | 
			
		||||
 | 
			
		||||
	var elem1 ElementWithIgnoredField
 | 
			
		||||
	err := DB.First(&elem1, elem.Id).Error
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Errorf("error getting an element from database: %s", err.Error())
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if elem1.IgnoredField != 0 {
 | 
			
		||||
		t.Errorf("element's ignored field should not be updated")
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestUpdateDecodeVirtualAttributes(t *testing.T) {
 | 
			
		||||
	var user = User{
 | 
			
		||||
		Name:     "jinzhu",
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user