JSONAPIを介して属性を作成できる状況があります。ただし、一度作成したら、更新されないようにしたいと思います。
この制約により、を使用している私の最初のソリューションではattr_accessible
不十分になります。Railsでこの種の状況を処理するための良い方法はありますか、update
それともメソッドで手動チェックを実行する必要がありますか?
JSONAPIを介して属性を作成できる状況があります。ただし、一度作成したら、更新されないようにしたいと思います。
この制約により、を使用している私の最初のソリューションではattr_accessible
不十分になります。Railsでこの種の状況を処理するための良い方法はありますか、update
それともメソッドで手動チェックを実行する必要がありますか?
を使用できますattr_readonly
。これにより、作成時に値を設定できますが、更新時には無視されます。
例:
class User < ActiveRecord::Base
attr_accessible :name
attr_readonly :name
end
> User.create(name: "lorem")
> u = User.first
=> #<User id: 1, name: "lorem">
> u.name = "ipsum"
=> "ipsum"
> u.save
=> true
> User.first.name
=> "lorem"
私の知る限り、これを行うための良い方法はありません。カスタムフィルターを作成する必要があります。
before_update :prevent_attributes_update
def prevent_attribute_updates
%w(attr1, attr2).each do |a|
send("#{attr1}=", send("#{attr1}_was")) unless self.send("#{attr1}_was").blank?
end
end