2014-04-28 1 views
14

에 데이터베이스에 배열을 저장하기 위해이 같은 PARAMS있는 경우 :방법 레일

params["scholarship"] = {"name"=>"test", "state_ids"=>["1", "2", "3", "4"]} 

을하고 난 데이터베이스 필드에 개체를 만들 때 데이터베이스에 저장하지 STATE_ID?

방법 형식으로 데이터베이스에 저장합니다 :

#<Scholarship id: 1, name: "test", state_id: "["1", "2", "3", "4"]"> 

은 어떻게합니까? 모델에서

답변

14

ActiveRecord::Base.serialize. 예를 들어

:

class User < ActiveRecord::Base 
    serialize :scholarship 
end 

user = User.create(:scholarship=> { "name" => "test", "state_ids" => ["1", "2"]}) 
User.find(user.id).scholarship# => { "name" => "test", "state_ids" => ["1", "2"] } 
+1

there.You 질문과 comment.Stick 거기에 응답해야 수정됩니다 – Stefan

+0

씨야 state_ids', 감사는 – Rubyist

+0

덕분에 실수를 ... 오타 환영합니다 .... @ tardjo – tardjo

2

여기

serialize :state_ids 

당신이 state_ids 매개 변수를 전달하고에 저장하려고하는 것 같습니다 말했다되고있는 문서

link입니다 있기 전에

감사 state_id,이게 네가하려는거야?

0
state_ids != state_id 

속성에 2 개의 다른 이름이 있으므로 줄이 정렬되지 않습니다. 그런 다음 열의 이름을 변경하면 serialize :state_ids을 사용하십시오.

그러나 state_ids 목록을 저장하는 경우 상태 표가있는 것으로 추측 할 것이므로 has_and_belongs_to_many 연관을 조사해야합니다.

+0

는' –

16

는 또한 배열이 저장 PostrgreSQL 지원을 사용할 수 있습니다. (물론 PG를 사용한다면).

add_column :table_name, :column_name, :string, array: true, default: [] 

을하지만 검증에 대해 잊지 마세요 : 마이그레이션 그렇게 보일 것이다.

이 이미 당신은 배열의 복수형을 사용한다