2016-10-19 1 views
0

제출할 때 데이터베이스에 새 레코드를 작성하는 양식이 있습니다. 데이터베이스에 두 개의 값 (value_1 & value_2)이 있습니다. 양식에는 value_1에 대한 입력 필드가 있으며 이는 yes와 no의 드롭 다운 값입니다. 양식이 제출되면 value_1 및 value_2를 value_1의 입력 필드에서 선택한 값으로 설정하고 싶습니다. value_1의 드롭 다운이 yes로 설정되면 value_2도 yes로 설정됩니다.두 개의 데이터베이스 값을 설정하는 하나의 양식 입력

params[:person][:free] = params[:person][:trial] 
@person = Person.new(params[:person]) 
@person.update_attribute(:free, params[:person][:free]) 
+0

params [: person] [: free]의 값을 변경 한 후에 Person을 작성하기 때문에 마지막 줄이 필요 없다고 생각합니다. @person을 저장할 수 있습니다. – Sajan

+0

이상하게도 나는 생각했다. 그러나 업데이트를 추가해야했다. 그러므로 업데이트를 추가해야했다.'@ person.update_attribute (: free, params [: person] [: trial])'에 수정을 마쳤다. 'Person.new'에 영향을 미치지 않는다면'params [: person] [: free]'에 값을 할당하십시오. – EamonnMcElroy

+0

'p params [: person]'을 첫 번째 줄 다음 레일즈 콘솔에서 볼 수있는 값은? 보여주는거야? – Sajan

답변

0

먼저 당신이 당신이 정말로 원하는 것을 생각해야 다음하지만 현재 사용하고

더 우아한 해결책이 있어야한다 생각합니다. 당신의 논리는 무엇입니까? value_2를 항상 value_1과 같게 설정 하시겠습니까? 이 경우 절대적으로 데이터베이스의 두 번째 열이 필요 없기 때문에 나는 희망하지 않습니다. value_2를 value_1과 같게하고 새 레코드를 만들지 만 나중에 그 레코드를 편집 할 수있게 하시겠습니까? 이 경우 콜백과 모델의 논리를 넣어해야합니다

를 모델에 추가 기능에서 : 당신은 사람이 모델 자체 이외의 방법에 액세스 할 수 싶지 않기 때문에

before_create :set_value_2 

private 

def set_value_2 
    self.value_2 = value_1 
end 

개인 문이 .

관련 문제