2014-08-27 88 views
0

我想弄清楚如何只更新對象,如果某些領域已經改變。在最基本的層面上,如果說提交的startdate或enddate不同,但我不想更新它,但如果提交的user_id不同,則不會。這就是說,如果日期不同,並且它更新,我想使用它的user_id參數。我有SSN方法徹底刪除參數,但是,似乎是它會導致用戶沒有更新:只更新一個對象,如果某些領域改變

形式:

<%= form_for(@enrollment) do |f| %> 

<div class="field"> 
    <%= f.label :enddate %><br> 
    <%= f.text_field :enddate %> 
</div> 

<%= f.submit 'Term Plan'%> 
<%= f.submit 'Cancel Plan', name: 'cancel_plan'' %> 

控制器:

def update 
    authorize @enrollment 
    @enrollment.update_attributes(enrollment_params) 
    @enrollment.user=current_user 

    if params[:cancel_plan] 
     @[email protected] 
    end 

    if @enrollment.save 
     redirect_to @enrollment, notice: 'Enrollment was successfully updated.' 
    else 
     render action: 'edit'  
    end 
    end 

所以在上面的例子中,我只想保存@enrollment對象,如果結束日期與之前不同,則不是如果只是用戶是不同的。

任何想法,建議等都將不勝感激!

+0

對不起,疑問句也不清楚..做ü想知道,如果某些特定ATTR已更改/更新? – RAJ 2014-08-27 16:16:06

+0

好點。我將它添加到上面,可能仍然不能很好地表達我的問題:因此,在上面的示例中,如果** enddate **與之前不同,則只想保存@enrollment對象,而不僅僅是**用戶* *是不同的。 – MechDog 2014-08-27 16:29:57

+0

@MechDog你可以嘗試使用這段代碼:'@ enrollment.enddate_changed? && @ enrollment.save'? – Thanh 2014-08-27 16:35:57

回答

0

您可以嘗試使用此代碼:@enrollment.enddate_changed? && @enrollment.save代替@enrollment.save