我有一个ownership
属于product
模型和模型的user
模型。
Anownership
具有以下参数:
- user_id(整数)
- product_id (整数)
- 拥有日期(日期时间)
- given_date(日期时间)
- 当前(布尔值)
- 同意(布尔值)
当 current 为真时,用户是产品的所有者。当 owning_date 不为 nil 且 given_date 为 nil 时 current 为真。
我的所有权控制器中有一个update
方法,定义如下:
def update
@ownership = Ownership.find(params[:id])
@ownership.update_attributes(ownership_params)
respond_to do |format|
format.html do
flash[:success] = t('flash.success.ownership.update')
redirect_to product_path(@ownership.product)
end
format.js
end
end
我创建了一个同意按钮和一个接受按钮:
<%= form_for(ownership, remote: true) do |f| %>
<div><%= f.hidden_field :agreed, value: true %></div>
<%= f.submit "agree" %>
<% end %>
<%= form_for(ownership, remote: true) do |f| %>
<div><%= f.hidden_field :owning_date, value: Time.now %></div>
<%= f.submit "take" %>
<% end %>
现在我想更改控制器中的更新方法,因为当用户单击获取按钮时,必须将先前所有权的 given_date 更改为Time.now
. 但是当用户单击同意按钮时,我不希望我的更新方法这样做。
我尝试了以下代码,但没有成功。单击按钮后,同一产品有两个当前所有权。
def update
@ownership = Ownership.find(params[:id])
if @ownership.owning_date != params[:owning_date]
@ownership.product.ownerships.find_by(current: true).update_attributes(given_date: Time.now, current: nil)
end
@ownership.update_attributes(ownership_params)
respond_to do |format|
format.html do
flash[:success] = t('flash.success.ownership.update')
redirect_to product_path(@ownership.product)
end
format.js
end
end
你有想法吗 ?