Object.update_attribute(:only_one_field, "Some Value")
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")
이 두 가지 모두 AR에게 명시 적으로 업데이트하도록 지시하지 않고 객체를 업데이트합니다.
Rails API의 말 :
update_attribute의 경우
일반적인 유효성 검사 절차를 거치지 않고 단일 특성을 업데이트하고 레코드를 저장합니다. 이는 기존 레코드의 부울 플래그에 특히 유용합니다. 유효성 검사 모듈이 혼합되어 있으면 Base의 일반 update_attribute 메서드가이 메서드로 대체됩니다 (기본적으로).
update_attributes를 위해
전달 된 해시에서 모든 속성을 업데이트하고 레코드를 저장합니다. 객체가 유효하지 않으면 저장이 실패하고 false가 반환됩니다.
따라서 객체의 유효성을 검사하지 않으려면 update_attribute를 사용해야합니다. before_save에이 업데이트가 있으면 어떻게됩니까?
내 질문은 update_attribute도 사전 저장 또는 유효성 검사를 무시하는 것입니다.
또한 update_attributes에 해시를 전달하는 올바른 구문은 무엇입니까? 맨 위의 예제를 확인하십시오.
before_save
콜백 내에 설정되기 때문에 어쨌든 저장된 객체와 함께 업데이트됩니다 . update_attribute(:discount, 0.1) if amount > 100
당신 대신에 Fe는 할 수있었습니다 discount = 0.1 if amount > 100
. update_attribute
호출 save
명령문이 내부에 있기 때문에,이 경우 불필요한 객체에 before_save
콜백 어쨌든 구원을 얻을 것이다. 나는 그것이 의미가 있기를 바랍니다.
update_attribute
안에 명령문 을 넣고 싶은 이유는 무엇before_save
입니까? 나는 이것에 대한 좋은 이유를 생각할 수 없다.