【发布时间】:2019-04-28 00:55:03
【问题描述】:
如果同一模型中的属性设置为 true,我如何将模型设置为每次访问时只读?
我到处看了看,只读模型似乎只有很少的文档甚至网络结果。
编辑(附加信息): 我的模型(application.rb)中有两种方法 - 不是私有的
def lock()
self.locked = true
save(validate: false)
end
def unlock()
self.locked = false
save(validate: false)
end
我在更新时从我的应用程序控制器调用它们:
if params[:application][:locked] == false
@application.unlock
return
elsif params[:application][:locked] == true
@application.lock
return
end
在模型 (application.rb) 中我有 - 不是私下的:
def readonly?
locked == true
end
【问题讨论】:
-
@iGian - 这有点重复。我这样做是因为我觉得这个话题与我在那篇文章的主要问题有点偏离主题,所以我想确保它们分开存在,以便分别回答这两个问题(并希望帮助其他人解决这些问题)。这是关于根据模型中的属性使模型只读,另一个是关于只允许特定属性为只读。
-
@notADevAccount 当您说“在 Rails 模型上只读”时,您是否打算将整个模型(所有记录)设置为只读?还是仅为该模型的一个实例设置只读(每个实例动态解析)?
-
@Jay-ArPolidario - 是的,我需要按实例设置它,因为每条记录都有一个名为“锁定”的属性,该属性应该确定该特定记录是否为只读。如果为 true,则它是只读的,并且不应允许任何写入。
-
@notADevAccount 我明白了,那么我想我的答案就是你要找的吗? :)
标签: ruby-on-rails model readonly readonly-attribute