복붙노트

[RUBY-ON-RAILS] 레일에서 attr_accessor의 사용

RUBY-ON-RAILS

레일에서 attr_accessor의 사용

언제 attr_reader / attr_writer / attr_accessor에 레일 모델을 사용합니까?

해결법

  1. ==============================

    1.attr_accessor 직접 데이터베이스에 저장하지 않으 값을 사용할 수 있으며, 그 객체 (예를 들어, 암호)의 삶을 위해 존재하는 유일한 것입니다.

    attr_accessor 직접 데이터베이스에 저장하지 않으 값을 사용할 수 있으며, 그 객체 (예를 들어, 암호)의 삶을 위해 존재하는 유일한 것입니다.

    attr_reader는이 같은 일을 여러 대안 중 하나로 사용할 수 있습니다 :

    def instance_value
      "my value"
    end
    
  2. ==============================

    2.결코, 당신은 그것을 위해 특별히 필요하지 않으면. 당신이 걱정할 필요가 없습니다 자동 데이터베이스 기반 접근은 당신을 위해 만들어집니다.

    결코, 당신은 그것을 위해 특별히 필요하지 않으면. 당신이 걱정할 필요가 없습니다 자동 데이터베이스 기반 접근은 당신을 위해 만들어집니다.

    사용자가 만든 않는 모든 attr_accessors는 레일 객체의 관련 @attr을 변경하지만, 객체가 소멸 될 때 다시 데이터베이스에 충실하지 않는 한이 손실됩니다. 때때로 당신은이 동작을 싶어하지만, 그것은 레일 애플 리케이션에서 특이한입니다.

    이제 루비, 그것은 다른 이야기, 그리고 당신은 매우 자주 이것들을 사용하게. 당신이 레일에서 그들을 필요로하지만 나는 특히 처음 --- 놀라게 될 것입니다.

  3. ==============================

    3.모델 그냥 루비 클래스 액티브 :: 자료에서 해당 상속 있습니다 레일. 액티브는 루비 클래스의 표를 참조 열 이름에 대한 getter와 setter를 정의 할 attr_accessors을 사용합니다. 이것이 바로 지속성 것을 유의해야합니다; 모델은 여전히 ​​루비 클래스입니다.

    모델 그냥 루비 클래스 액티브 :: 자료에서 해당 상속 있습니다 레일. 액티브는 루비 클래스의 표를 참조 열 이름에 대한 getter와 setter를 정의 할 attr_accessors을 사용합니다. 이것이 바로 지속성 것을 유의해야합니다; 모델은 여전히 ​​루비 클래스입니다.

    attr_accessor : 푸 다음의 바로 가기는 간단하다 :

    def foo=(var)
      @foo = var
    end
    
    def foo
      @foo
    end
    

    attr_reader : 푸 다음의 바로 가기는 간단하다 :

    def foo
      @foo
    end
    

    attr_writer : foo는이 다음에 대한 바로 가기입니다 :

    def foo=(var)
      @foo = var
    end
    

    attr_reader는 게터의 바로 가기이고 attr_writer 그냥 세터에 대한 바로 가기 동안 attr_accessor는 getter와 setter에 대한 바로 가기입니다.

    레일에서 액티브 읽고 데이터베이스에 값을 기록 할 수있는 편리한 방법으로 이러한 getter 및 setter를 사용합니다. 하지만, 데이터베이스는 지속성 계층입니다. 당신이 다른 루비 클래스가 제대로 비즈니스 로직을 구성하는 것 같이 attr_accessor 및 attr_reader를 자유롭게 사용할 수 있어야합니다. 당신이 얻을 필요가 있고 세트는 외부 데이터베이스에 유지해야 할 무엇 당신의 객체의 속성으로, 그에 따라 attr_s를 사용합니다.

    더 많은 정보:

    http://apidock.com/ruby/Module/attr_accessor

    http://www.rubyist.net/~slagell/ruby/accessors.html

    루비 attr_accessor은 무엇인가?

  4. ==============================

    4.=> 진정한 수용 : TERMS_OF_SERVICE : 당신이 TERMS_OF_SERVICE의 수용을 검증하는 데 사용하는 경우, 당신은 정말 유효성을 확인하고 사용하는 것이 좋습니다. 그것은 가상 속성을 생성하고 훨씬 더 간결합니다.

    => 진정한 수용 : TERMS_OF_SERVICE : 당신이 TERMS_OF_SERVICE의 수용을 검증하는 데 사용하는 경우, 당신은 정말 유효성을 확인하고 사용하는 것이 좋습니다. 그것은 가상 속성을 생성하고 훨씬 더 간결합니다.

    http://guides.rubyonrails.org/active_record_validations.html#acceptance.

  5. ==============================

    5.한 가지 예는 하나 개의 직렬화 된 컬럼에 저장 옵션을 가지고있다. 이러한 옵션 중 하나에 대한 텍스트 필드가하려고하면 양식 빌더는 불평 것입니다. 당신은 직렬화 된 컬럼에 저장 업데이트 작업에서 다음 가짜로 attr_accessor를 사용하고 있습니다.

    한 가지 예는 하나 개의 직렬화 된 컬럼에 저장 옵션을 가지고있다. 이러한 옵션 중 하나에 대한 텍스트 필드가하려고하면 양식 빌더는 불평 것입니다. 당신은 직렬화 된 컬럼에 저장 업데이트 작업에서 다음 가짜로 attr_accessor를 사용하고 있습니다.

  6. from https://stackoverflow.com/questions/2793098/usage-of-attr-accessor-in-rails by cc-by-sa and MIT license