2013-10-31 2 views

답변

1

이것은 하찮게 새로운 라이프 사이클 방법으로 달성 할 수있다 (당신에게 감사합니다!). 컨트롤러에서

:

this.create = function (req, resp, params) { 
    var self = this 
     , person = geddy.model.Person.create(params); 

    person.firstname = params.firstname; 
    person.lastname = params.lastname; 

    if (!person.isValid()) { 
     this.respondWith(person); 
    } 
    else { 
     person.save(function(err, data) { 
     if (err) { 
      throw err; 
     } 
     self.respondWith(person, {status: err}); 
     }); 
    } 
    }; 

모델에서 : 당신은 "가상"속성을 선언하지

this.defineProperties({ 
    name: {type: 'string'} 
    }); 

    this.beforeSave = function() { 
    this.name = this.firstname + ' ' + this.lastname; 
    } 

주, 그렇지 않으면 geddy 그들은 데이터베이스에 저장합니다.

+0

감사합니다. Ben, 그래서 지금 우리는 레일스가'attr_accessor'에서하고있는 것처럼 모델 안에 선언 할 수 없으므로'.create (params)'를 호출 한 후에 하나씩 정의하는 대신'.create()'? – ginad

+0

나는 그 코드를 일찍 시도했는데 (가상) 속성이'.create'로 설정되지 않은 이유를 알아 내지 못했습니다. 이게 이상하다는 말이 맞아. 나는 우리의 geddy-passport 코드를 보았고,'confirmPassword'는 가상 속성으로 잘 작동하는 것 같습니다. 문제를 제기하고 진행 상황을 살펴 봅니다. – Ben

+0

그렇습니다. 왜냐하면 geddy는 validates를 가지고 있기 때문에 궁금합니다. 확인 .'create'가 가상 속성을 읽지 않는다면 어떻게 사용하는지 궁금합니다. 다시 한번 감사드립니다. – ginad