2016-12-14 1 views
0

전체 프로젝트는 다음과 같이 구성됩니다. 데이터를 제공하고 데이터를 저장하는 API가 있습니다. 데이터 api의 데이터를 "훌륭하고 깨끗한"데이터로 변환하는 다른 애플리케이션보다. 프론트 엔드 (frontend)보다 훌륭하고 깨끗한 데이터를 필요로합니다.레일 - 데이터베이스에 저장되지 않은 속성이있는 모델

중간 부분에는 모델 필드가 있습니다. id, area 등의 복수의 속성을 가지고 있습니다. 이러한 속성도 schema.rb에 있습니다. 이제는 다음과 같은 속성도 있습니다 : field_nr 이는 schema.rb에 없습니다. 그러나 api에서 가져온 변환 된 다음 json으로 인쇄됩니다. 이제 필드 모델에서 schema.rb/database에없는 field_nr 속성을 읽어야합니다. 어떻게 그 특성을 읽을 수 있습니까? 당신의 도움 &에 대한

덕분에 뭔가가 옵션으로

+0

api를 사용하여 필드를 field_nr로 변경하십시오. –

답변

0

불분명 한 경우, 당신은 모델 클래스에 attr_accessor :field_nr을 추가 할 수 있습니다 부탁드립니다. 이렇게하면 필요한 세터와 게터가 제공됩니다.

0

ActiveRecord 모델에 "가상"속성을 추가하는 것은 다른 Ruby 클래스에 속성을 추가하는 것과 거의 같습니다.

Ruby 인스턴스 변수에서 항상 private *입니다. 그리고 당신은 생성 접근에 의해 액세스를 제공합니다 :

class Thing 
    def a_readable_attr 
    @a_readable_attr 
    end 

    def a_write_only_attr=(v) 
    @a_write_only_attr = v 
    end 

    def a_rw_attribute 
    @a_rw_attribute 
    end 

    def a_rw_attribute= 
    @a_rw_attribute 
    end 
end 

레일에 하나 좋은 점은 그것이 세터가 존재하는 당신이 한 해시에서 속성을 할당 할 수 있다는 것입니다 :

class Thing 
    attr_reader :a_readable_attr 
    attr_setter :a_write_only_attr 
    attr_accessor :a_rw_attribute 
end 

이에 equivilent입니다

class Thing < ActiveRecord::Base 
    attr_accessor :foo 
end 

Thing.new(foo: 'bar') 
관련 문제