2014-08-27 99 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