0
나는 동시에 두 개의 서로 다른 모델의 하나의 형태에서 가져온 값을 업데이트 할
, 나는 그렇게하려면 다음 코드를 작성했습니다 : -레일 : 여러 모델을 업데이트하여 여러개의 속성이 동시에
if @mess.update_attributes!(:mess_name => params[:mess_name_update], :mess_capacity => params[:mess_capacity_update]) && @mess_price.update_attributes!(:breakfast_charge => params[:mess_breakfast_charge_update], :lunch_charge => params[:mess_lunch_charge_update], :dinner_charge => params[:mess_dinner_charge_update], :monthly_charge => params[:mess_monthly_charge_update], :semesterly_charge => params[:mess_semesterly_charge_update], :start_date => params[:start_date_update], :end_date => params[:end_date_update], :rebate => params[:rebate_update])
flash[:success] = "Mess Details Updated Successfully!!"
else
flash[:error] = "Some Error! Please Try Again!"
end
그러나 위의 코드는 다음과 같은 오류를
액티브 :: RecordInvalid
을주고있다검증 실패 : 비워 둘 수 없습니다 시작 날짜
다음은의 MessPrice @mess의 MessType 모델 및 @mess_price를 들어, 모델 내가 사용하고있는 두 개의 스키마입니다 :
MessType
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| mess_id | int(11) | NO | PRI | NULL | auto_increment |
| mess_name | varchar(255) | NO | | NULL | |
| mess_capacity | int(11) | NO | | NULL | |
| start_date | date | No | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
MessPrice
+-------------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| breakfast_charge | float | YES | | NULL | |
| lunch_charge | float | YES | | NULL | |
| dinner_charge | float | YES | | NULL | |
| monthly_charge | float | YES | | NULL | |
| semesterly_charge | float | YES | | NULL | |
| rebate | float | YES | | NULL | |
| start_date | date | YES | | NULL | |
| end_date | date | YES | | NULL | |
| mess_id | int(11) | YES | MUL | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+-------------------+----------+------+-----+---------+----------------+
'update_attributes를 코드를 읽기 쉽게 만들기 및 트랜잭션에서 실행 추천 할 것입니다
params[:something][:xyz]
를 통해 액세스 할 필요가 될 수있다! '해야하지 'params'에서 값을 바꿀 수 있습니다. 값이'nil'으로 시작하는지 확인하기 위해'if' 전에 디버그 문으로'params' 값을 검사 했습니까? – lurker
@mbratch 예''null '이 아닌 값을 반환하는'params' 값을 확인했습니다. – hiteshtr
그건 문제가되지 않습니다. 모델 업데이트를 교환 해 보셨습니까? 두 번째 모델을 먼저 업데이트 한 다음 첫 번째 모델을 업데이트합니다. 차이가 없어야합니다. –