2

JSONAPIを介して属性を作成できる状況があります。ただし、一度作成したら、更新されないようにしたいと思います。

この制約により、を使用している私の最初のソリューションではattr_accessible不十分になります。Railsでこの種の状況を処理するための良い方法はありますか、updateそれともメソッドで手動チェックを実行する必要がありますか?

4

2 に答える 2

4

を使用できます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"
于 2012-12-06T02:36:00.443 に答える
0

私の知る限り、これを行うための良い方法はありません。カスタムフィルターを作成する必要があります。

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
于 2012-12-06T02:24:25.593 に答える