0

ではどのようにattr_accessor動作しActiveResourceますか?

class User < ActiveResource::Base
 attr_accessor :name
end

dとどう違うのattr_accessorActiveRecor

4

2 に答える 2

2

attr_accessorRailsではなくRubyに組み込まれています。attr_accessibleの一部であると混同している可能性がありますActiveRecord。違いは次のとおりです。

attr_accessor

クラスを受講する:

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_readerandを使用できますattr_writer

attr_accessible

これは、に似た ActiveRecord 固有のものですattr_accessor。ただし、動作が大きく異なります。一括割り当てを許可するフィールドを指定します。例えば:

class User
  attr_accessible :name, :email
end

一括割り当ては、POST パラメーターのハッシュをRails コントローラーのneworアクションに渡すことによって行われます。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 です。

于 2013-05-28T12:35:18.207 に答える