gpt4 book ai didi

ruby-on-rails - 编写简单 ActiveRecord 代码的更像 ruby​​ 的方式

转载 作者:数据小太阳 更新时间:2023-10-29 07:31:51 25 4
gpt4 key购买 nike

这是一些相当标准的 Ruby on Rails 4 ActiveRecord 代码:

  def hide(user)    
self.hidden = true
self.hidden_on = DateTime.now
self.hidden_by = user.id
end

def unhide
self.hidden = false
self.hidden_on = nil
self.hidden_by = nil
end

def lock(user)
self.locked = true
self.locked_on = DateTime.now
self.locked_by = user.id
end

def unlock
self.locked = false
self.locked_on = nil
self.locked_by = nil
end

# In effect this is a soft delete
def take_offline(user)
hide(user)
lock(user)
end

代码通俗易懂,不自作聪明。不过感觉很啰嗦。指定此代码/行为的更简洁或规范的方式是什么?

最佳答案

嗯,这是一个权衡,但如果你想更聪明,你可以这样做:

def self.def_toggle(type, field)
define_method(type) do |user|
send("#{field}=", true)
send("#{field}_on=", DateTime.now)
send("#{field}_by=", user.id)
end

define_method("un#{type}") do
send("#{field}=", false)
send("#{field}_on=", nil)
send("#{field}_by=", nil)
end
end

def_toggle(:hide, :hidden)
def_toggle(:lock, :locked)

关于ruby-on-rails - 编写简单 ActiveRecord 代码的更像 ruby​​ 的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31094720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com