Gui*_*nge 0 ruby-on-rails ruby-on-rails-4
我的数据库上有一个名为的表budgets.它有author_id,status,answered_at列.
如果status != 1,那么author_id和answered_at应nil/ null.
我有以下方法budgets_controller.rb:
def update
budget = Budget.find(params[:id])
budget.update_attributes(status: 1, author_id: current_user.id, answered_at: DateTime.now.to_date)
budget.save!
end
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以重复使用相同的方法(update)来改变author_id和answered_at为null,status本身0如果是已 1.某种toggle.
我看到Rails提供了这种方法来切换布尔值,但我无法看到它如何能够满足我的需要,因为我正在使用另外两个不是布尔值的列.
我想你可能想要的是一个模型回调.在你的实例中,像
# on models/budget.rb
before_update :nullify_author
def nullify_author
if status == 1
author = nil
answered_at = nil
status = 0
save
end
end
Run Code Online (Sandbox Code Playgroud)
此外,你不应该toggle在这里使用.Ruby的虚假性比JavaScript更严格.在Ruby的情况下,只有false并且nil是假的.对你而言,0 并不是假的,而是真实的.要证明这一点,试试吧!0.返回的值是布尔值false而不是FixNum 1
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |