을 감안할 때 : 콘솔에서 또는 뷰에서Rails 모델에서 가상 속성을 자동으로 반환 할 수 있습니까?
class Foo
has_one :bar
def bar_name
bar.name
end
end
class Bar
belongs_to :foo
end
, 나는 'baz'
를 얻을 수 @foo.bar_name
수 있습니다.
나는 @foo.as_json(methods: :bar_name)
을 {"id"=>"abc123", "bar_name"=>"baz"}
으로받을 수 있음을 알고 있습니다.
또한 속성을 비정규 화하여 비 가상으로 만들 수도 있지만이 경우에는하지 않을 것입니다.
가상 속성이 포함 된 모델을 자동으로 반환 할 수 있습니까?
#<Foo id: "abc123", bar_name: "baz">
은 내가 모델의 중첩 된 컬렉션과 대형 개체를 구성하고 있기 때문에이 작업을 수행 할 수 및 as_json
전화 나에게서 멀리 추상화된다.
클라이언트에'#'를 보내거나'Foo' 객체를 콘솔에 출력하려고합니다 (예 :'puts fooobj # => # )? –
niceman
클라이언트에 아무 것도 보내지 않는다고 가정 해 봅시다. 메서드의 결과를 명시 적으로 호출하지 않고 콘솔에 표시하기 만하면됩니다. –
'as_json' 응답에서 이것을 원합니까? 그렇다면 모델 자체에서'as_json'을 다시 정의 할 수 있습니다. 이것을 객체 표현에 넣고 싶다면'inspect'을 다시 정의 할 수 있습니다. – engineersmnky