acts_as_readonlyable
というプラグインを使うという方法があるようですが、2.3.4では動かない気配です。
こちらを改造して使うには、
http://hisme.net/~masaki/blog/article/show/41
が参考になります。
プラグインを使わない方法として
http://lunatear.net/archives/001089.html
という方法もあります。
2.3.4を使っていてプラグインに手を入れるのがちょっと面倒でさらにいっぱいRead OnlyなModelを使いたいと思ったのでプラグインを使わない方法を参考にさせていただき以下のような感じでやってみました。
app/models/read_only.rb
を以下のような感じで作ります。
class ReadOnly < ActiveRecord::Base abstract_class = true def readonly? true end def before_destroy raise ActiveRecord::ReadOnlyRecord end def self.delete(id) raise ActiveRecord::ReadOnlyRecord end def self.delete_all(conditions) raise ActiveRecord::ReadOnlyRecord end def self.destroy_all(conditions) raise ActiveRecord::ReadOnlyRecord end endそしてRead Onlyにしたいモデルを以下のように書きます。
class Test < ReadOnly end
ReadOnlyクラスに
abstract_class = true
をつけるのがポイントでした。
0 件のコメント:
コメントを投稿