2012-02-23 3 views
1

다음은이 질문의 후속 작업입니다 where's the appropriate place to handle writing the current_user.id to an object 다음 모델이 있습니다. 애셋이 많이있는 항목입니다. 나는 상품에 using accepts_nested_attributes_for :assets입니다.accepts_nested_attributes_for 모델에 값을 할당하는 방법

각 자산에 current_user.id 값을 할당하고 싶습니다. 일반적으로 나는 단지 @item.update_attributes(params[:item])으로 저장합니다. 이 시나리오에서 각 자산에 대해 user_id를 설정하는 간단한 한 줄 방법이 있습니까?

dev에 로그에 보면, 나는 값은 여기를 참조하십시오

item[assets_attributes][10][asset] 

난 그냥이 모든 반복하고 USER_ID 값을 설정해야합니까?

들으

여기에 HTML의 몇 가지 더 (항목 -> MENU_ITEM은, 간단하게 위 탈락했다). 제안 된 컨트롤러 sol'n은 작동하지 않는 것 같습니다. 나는 컨트롤러의 수준에서 일하는 것이 좋다. 어떤 도움을 주셔서 감사합니다.

<div class='image-row'> 
    <input id="menu_item_assets_attributes_18_asset" name="menu_item[assets_attributes][18][asset]" type="file" /> 
    <input id="menu_item_assets_attributes_18_description" name="menu_item[assets_attributes][18][description]" size="30" type="text" /> 
    </div> 
    <div class='image-row'> 
    <input id="menu_item_assets_attributes_19_asset" name="menu_item[assets_attributes][19][asset]" type="file" /> 
    <input id="menu_item_assets_attributes_19_description" name="menu_item[assets_attributes][19][description]" size="30" type="text" /> 
    </div> 
<div class='image-row'> 
    <a href="/images/371/5ea19b9cfa534f1c1f5457ebb149d4259a662f88_huntbch_original.jpg?1329917713"><img alt="D5cc413a1748fb43b0baa2e32e29b10ac2efda10_huntbch_thumb" src="/images/371/d5cc413a1748fb43b0baa2e32e29b10ac2efda10_huntbch_thumb.jpg?1329917713" /></a> 
<div class='img-row-description'> 
    <label for="menu_item_assets_attributes_20_description">Description</label> 
    <input id="menu_item_assets_attributes_20_description" name="menu_item[assets_attributes][20][description]" size="60" type="text" value="here is my comment" /> 
    <label for="menu_item_assets_attributes_20_destroy">Destroy</label> 
    <input name="menu_item[assets_attributes][20][_destroy]" type="hidden" value="0" /><input id="menu_item_assets_attributes_20__destroy" name="menu_item[assets_attributes][20][_destroy]" type="checkbox" value="1" /> 
    </div> 

답변

0

어떻게 PARAMS 배열의 반복 등과 같은 값을 설정하는 방법에 대한 :

params[:item][:assets_attributes].map! do |asset_params| 
    asset_params[:user_id] = current_user.id 
end 

지금 당신이 이전 update_attributes(params[:item])를 사용할 수 있습니다.

+0

이 구문은이 경우 id 값을 처리합니까? '심볼을 정수로 변환 할 수 없습니다.'오류가 발생합니다. 도움을위한 thx! 레일을 빨리 집어 넣으려고 시도합니다. – timpone

1

이 답변은 아마도 이전 답변보다 약간 혼란 스럽습니다.

각 저작물에 항목이 있어야하는 경우 저작물 소유주의 아이디어를 완전히 삭제하는 것이 더 좋습니다. @asset.item.user과 같은 첨부 항목을 쿼리하여 소유 한 사용자를 항상 찾을 수 있습니다. 그러나 사용자가 항목과 별도로 저작물을 소유 할 수 있다면이 방법이 효과가 없을 것이라고 생각합니다.

자산이 항목의 중첩 된 방식으로 항상 생성되는 경우 자산의 before_create에서 원하는 값을 할당 할 수 있습니다. asset.rb에서 이런 식으로 뭔가 : 당신은 그냥 컨트롤러에서 작업을 수행하려는 경우

before_create :assign_user 

def assign_user 
    self.user = self.item.user if self.item && self.item.user 
end 

마지막으로, 볼프강의 대답은 정말 좋은 각 asset_attributes에 USER_ID를 추가합니다.

+0

우리의 스키마는 그룹 소유권과 같은 것을 돕기 위해 항목을 소유 할 수 있고 자산을 따로 따로 소유 할 수 있습니다. 사실, 우리는 자산 소유권을 상품과 별도로 존재하게하고 싶습니다. – timpone

관련 문제