2017-01-30 2 views
2

에 필드에 접두사를 추가합니다. 예를 들어, 언어 목록을 가지고 있습니다 :내가 피닉스 모델이 피닉스 모델

languages = ['ru', 'en', 'uk'] 

그리고 전 필드에 자동으로 접두사를 추가하고 싶습니다. 이 같은 (NodeJS) :

var langs = ['ru', 'en', 'uk'] 
var i18n = (obj) => { 
    var result = {}; 
    _.mapKeys(obj, (value, key) => langs.forEach((lang) => { 
    result[`${key}_${lang}`] = value; 
    })); 

    return result; 
} 

.. in model 

_.merge(CityModel, i18n({ 
    title: {type: DataTypes.STRING(64)}, 
})); 

피닉스에서 가능합니까?

답변

2

예,이 같은 컴파일시 변수에서 스키마에 필드를 추가 할 수 있습니다 : 당신이하지 않은 경우

:title_ru, :string 
:title_en, :string 
:title_uk, :string 
:content_ru, :string 
:content_en, :string 
:content_uk, :string 

:

@columns [%{name: "title", type: :string}, %{name: "content", type: :string}] 
@languages ~w(ru en uk) 

schema "news" do 
    for %{name: name, type: type} <- @columns, language <- @languages do 
    field :"#{name}_#{language}", type 
    end 
end 

이 다음 필드/유형을 생성합니다 데이터베이스의 이러한 필드는 이미 마이그레이션에서도 비슷한 루프를 수행해야합니다.

+0

감사합니다. –

+0

@AlexMarchenko 방금 질문과 마찬가지로 중첩 루프 예제도 추가했습니다. 희망도 그게 도움이! – Dogbert