我试图弄清楚如果某些字段发生了变化,如何只更新对象。在最基本的层面上,我想更新它,如果提交的startdate或enddate不同,但是如果提交的user_id不同则不会。话虽如此,如果日期不同并且更新我想要使用user_id参数。我已经完全删除了参数,但这似乎会导致用户无法更新:
形式:
<%= 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]
@enrollment.enddate=@enrollment.startdate.yesterday
end
if @enrollment.save
redirect_to @enrollment, notice: 'Enrollment was successfully updated.'
else
render action: 'edit'
end
end
因此,在上面的示例中,如果 enddate 与以前不同,我只想保存@enrollment对象,而不是仅仅用户不同。
任何想法,建议等都会一如既往地受到高度赞赏!
答案 0 :(得分:0)
您可以尝试使用此代码:@enrollment.enddate_changed? && @enrollment.save
代替@enrollment.save