ではどのようにattr_accessor
動作しActiveResource
ますか?
class User < ActiveResource::Base
attr_accessor :name
end
dとどう違うのattr_accessor
?ActiveRecor
ではどのようにattr_accessor
動作しActiveResource
ますか?
class User < ActiveResource::Base
attr_accessor :name
end
dとどう違うのattr_accessor
?ActiveRecor
attr_accessor
RailsではなくRubyに組み込まれています。attr_accessible
の一部であると混同している可能性がありますActiveRecord
。違いは次のとおりです。
クラスを受講する:
class Dog
attr_accessor :first_name, :last_name
def initialize(first_name, last_name)
self.first_name = first_name
self.last_name = last_name
end
end
attr_accessor
プロパティを作成し、読み取りと書き込みを可能にするメソッドを作成します。したがって、上記のクラスを使用すると、次のことが可能になります。
my_dog = Dog.new('Rex', 'Thomas')
puts my_dog.first_name #=> "Rex"
my_dog.first_name = "Baxter"
puts my_dog.first_name #=> "Baxter"
値を設定するためのメソッドと値を読み取るためのメソッドの 2 つのメソッドを作成します。読み取りまたは書き込みのみが必要な場合は、それぞれattr_reader
andを使用できますattr_writer
。
これは、に似た ActiveRecord 固有のものですattr_accessor
。ただし、動作が大きく異なります。一括割り当てを許可するフィールドを指定します。例えば:
class User
attr_accessible :name, :email
end
一括割り当ては、POST パラメーターのハッシュをRails コントローラーのnew
orアクションに渡すことによって行われます。create
ハッシュの値は、作成中のユーザーに割り当てられます。次に例を示します。
def create
# params[:user] contains { name: "Example", email: "..."}
User.create(params[:user])
#...
end
セキュリティのために、attr_accessible
一括割り当てを許可するフィールドを指定するために使用する必要があります。それ以外の場合、ユーザーがフラグを持っていれば、誰かがデータとしてアプリにadmin
投稿し、自分自身を管理者にすることができます。admin: true
attr_accessor
は Ruby クラスのヘルパー メソッドですattr_accessible
が、Rail ではセキュリティを強化するための ActiveRecord です。