2009-12-17 6 views

답변

3

아니요. instance2reload과 동기화하여 보관할 수 있습니다.

instance1 = MyModel.find(1) 
instance2 = MyModel.find(1) 

instance1.my_column = "new value" 
instance2.my_column 
# => old value 

instance1.save! 
instance2.my_column 
# => old value 

instance2.reload 
instance2.my_column 
# => new value 

변경 사항 instance1 데이터베이스에 저장해야합니다.

+0

oh gosh am slowpoke :) –

2
  1. instance1.equals (instance2)가 참이 아닙니다. Rails에서는 동일한 객체가 아닙니다. 당신이 INSTANCE1을 저장하고 질문의 두 번째 부분에 대한 완전히 올바른 instance2.reload
3

weppos을하지 않는 AFAIK, Merb는 그들은

  • instance2.my_column 새 값을 포함하지 않을 것입니다. 첫 번째 부분에서는 테스트하는 방법에 따라 평등에 미묘한 차이가 있습니다.

    instance1.eql?(instance2) 
        => true 
    

    .eql? 객체가 동일한 유형 및 값을 가지는지 확인합니다. 반면에

    instance1.equal?(instance2) 
        => false 
    

    .

    instance1.object_id 
        => 18277960 
    instance2.object_id 
        => 18271750 
    

    이이 rails을 나타냅니다 here

  • 0

    @ 스티브 Weet

    instance1 = User.find(1) 
    instance2 = User.find(1) 
    instance1 == instance2 # -> true 
    instance1.name = "zhangsan" 
    instance1 == instance2 # true (not false) 
    instance1.id = 0 
    instance1 == instance2 # false (this time) 
    instance1.id = 1 
    instance1 == instance2 # true (oh..) 
    

    그래서 ...이 주제에 대한 좋은 기사가 있기 때문에 검사 ​​객체는 같은 OBJECT_ID을 가지고 false를 반환하는 경우 모델 equalityid 속성에 따라 다릅니다.
    BTW : 테스트는 ruby193/rails4rc에 있습니다.

    관련 문제