2014-05-22 3 views
1

UrlCommand 모델에 cgi_attributes hstore 유형 열이 있습니다.레일 4 동적으로 Hstore 키를 생성하고 자동으로 허용 목록에 추가합니다.

class UrlCommand < ActiveRecord::Base 
    store_accessor :cgi_attributes, :name, :range, :security, :default_value 
end 

그러나 cgi_attributes의 키는 사용자가 동적으로 추가해야합니다.

그리고 나는 또한 하드 코딩보다

오히려 내 양식에 제기 한 입력으로 각 키의 열

- [:name, :range, :security].each do | column | 
    = render :partial => 'attributes' , :locals => { f: f, column: column } 

을 렌더링 할 또한으로 그 동적으로 생성 된 키를 갱신 할 수 있습니다 추가 할 필요가 내 모델. 이제

def url_command_params 
    params.require(:url_command).permit(:model_name, :firmware_version, :cgi_attributes, 
             :cgi_name,:name, :range, :security) 

end 

, 내 모든 코드는 어떻게 키를 만드는 방법과 값이 동적으로 UrlCommand 모델에 사용자가 추가 및 저장할 수있는 하드 코드를 기반으로?

+0

가능한 중복 http://stackoverflow.com/questions/17348703/rails-4-strong-params-dynamic-hstore-keys – Monideep

+0

@deep ActiveRecord를 통해 해당 키에 액세스하는 방법은 언급하지 않습니다. – newBike

+0

나는 같은 문제가있다. store_accessor를 동적으로 변경해야하며 해당 hstore 데이터를 표시/저장하는 방법 – parzival

답변

0

어쩌면 당신은 속성 이름 (CustomAttributes)에 대해 별도의 테이블을 만들 수 있습니다 다음과 같은 store_accessor로를 추가하는 루프를 만들 :

CustomAttributes.all.each do |attribute| 
    store_accessor :cgi_attributes attribute.name 
end 

난 당신이 강력한 매개 변수와 비슷한 뭔가를 할 수 있습니다 생각합니다. 내 응용 프로그램에서 일하는 hstore를 얻으려고 노력하고 있기 때문에 나는 내 자신을 시도하지 않았습니다. 그러나 나는 해결할 동일한 사용자 상황/문제를 가질 것이다. 그래서 나는 그것을 테스트하고 일단 대답을 얻으면 그것을 바꿀 것이다.

가이 railscast에 설명되어 같은 비트 : http://railscasts.com/episodes/403-dynamic-forms