레일스에서 이상한 문제가 있습니다. Rails에서 모델의 필드 값을 설정하고 싶지만 레일 콘솔에서조차 할 수 없습니다. 내가 Time.now 마지막 캠페인의 approved_at 속성의 값을 설정하려고레일에서 모델의 값 설정
1.9.3p393 :008 > campy = Campaign.last
Campaign Load (0.8ms) SELECT `campaigns`.* FROM `campaigns` ORDER BY `campaigns`.`id` DESC LIMIT 1
=> #<Campaign id: 3, name: "Stuff", ..., approved_at: nil, approval_requested_at: nil>
1.9.3p393 :009 > campy.approved_at = Time.now
=> 2013-07-01 00:54:38 +0200
1.9.3p393 :010 > campy.save
(0.2ms) BEGIN
(0.2ms) COMMIT
=> true
1.9.3p393 :011 > campy.approved_at
=> 2013-07-01 00:54:38 +0200
1.9.3p393 :012 > Campaign.last.approved_at
Campaign Load (0.7ms) SELECT `campaigns`.* FROM `campaigns` ORDER BY `campaigns`.`id` DESC LIMIT 1
=> nil
1.9.3p393 :013 > campy = Campaign.last
Campaign Load (0.6ms) SELECT `campaigns`.* FROM `campaigns` ORDER BY `campaigns`.`id` DESC LIMIT 1
=> #<Campaign id: 3, name: "Stuff", ..., approved_at: nil, approval_requested_at: nil>
1.9.3p393 :014 > campy.approved_at = Time.now
=> 2013-07-01 00:55:11 +0200
1.9.3p393 :015 > campy.save
(0.3ms) BEGIN
(0.2ms) COMMIT
=> true
1.9.3p393 :016 > Campaign.last.approved_at
Campaign Load (0.7ms) SELECT `campaigns`.* FROM `campaigns` ORDER BY `campaigns`.`id` DESC LIMIT 1
=> nil
하지만 내가 저장 한 후에도 전무 남아 : 관찰한다. approved_at는 캠페인 모델의 상단에있는 attr_accessor 함수를 통해 사용할 수 있습니다. 이 속성의 값을 변경할 수없는 이유는 무엇입니까?
편집 :
문제의 또 다른 흥미로운 측면은 내가 campy.approved_at를 설정하고 명시 적으로 값을 볼 때, 나는 정확한 값을 얻을 수 있다는 것입니다. 내가 변수로 따분 볼 때, 레일은 여전히 attr_accessor
와 가상 속성으로 approved_at
를 만들었습니다 때문입니다 전무
1.9.3p393 :027 > campy.approved_at = Time.now
=> 2013-07-01 01:19:05 +0200
1.9.3p393 :028 > campy.save
(0.2ms) BEGIN
(0.2ms) COMMIT
=> true
1.9.3p393 :029 > campy.approved_at
=> 2013-07-01 01:19:05 +0200
1.9.3p393 :030 > campy
=> #<Campaign id: 3, name: "Stuff", ... , approved_at: nil, approval_requested_at: nil>
무엇에 대해'campy.update_attribute : approved_at, Time.now'? –
'id'를 확인하여 매번 같은 레코드를 얻었음을 확인할 수 있습니까? –
Campaign idd는 campy와 Campaign.last 모두 3입니다. update 속성을 사용하면 approved_at도 설정되지 않습니다. –