现在我想在一个 model 中实现一些功能,例如:
class Spell < ActiveRecord::Base end 然后让这个 model 对外只有查看的功能不提供修改和删除这个 model 数据的功能. 不知道有没有,具体的我想在 model 这一层根据当前一些环境变量来判断 model 是否可以编辑。我能想到"cancan"?还有其它的办法么?
http://guides.rubyonrails.org/active_record_querying.html#readonly-objects
#1 楼 @Rei 看了一下:
client = Client.readonly.first client.visits += 1 client.save
不错的官方方法。我的需求是这样的:
现在有两个数据库,一套代码,两个环境。
在代码中 model 分别指定了不同的环境
例如:Spell 指向的是 dev1 环境,Item 指向的是 dev2 环境
dev1 我链接的是数据库 A
dev2 我链接的是数据库 B
我可以在页面上操作 Spell 和 item 的数据,但是我不希望 item 的数据被修改 所以我想有没有方法在 Item 这个 model 中设置一个全局的方法让其不能修改和删除
虽然官方的方法可以只读数据,但是对我来说我是想用全局的方式来设置而不是针对某一个数据来设置
http://blog.zobie.com/2009/01/read-only-models-in-activerecord/
看这个好使不
文档 http://apidock.com/rails/ActiveRecord/Base/readonly%3F
可以试试直接改 ActiveRecord
#3 楼 @Rei 多谢。这个好用。
重载 save 应该就可以了吧,全局就重写 active record 的