2016-06-06 2 views
0

Зачем использовать attr_accessor в Rails?Где использовать attr_accessor в Rails?

Документация: http://apidock.com/ruby/Module/attr_accessor

Я понимаю, что он может быть использован для создания «переходных» переменные, которые не сохраняются в БД. И это заменяет ручную запись сеттера и геттера.

Но я не думаю, что другой ответ объясняет гораздо больше, чем выше. То есть: Why use Ruby's attr_accessor, attr_reader and attr_writer?

Так что я до сих пор не уверен, в какой ситуации я бы это использовал. Может ли кто-нибудь уточнить?

ответ

0

Если «в рельсах» вы имеете в виду «модели activerecord», то ваша догадка верна: переходные атрибуты.

Вот пример (немного надуманный):

class User < ActiveRecord::Base 
    attr_accessor :is_admin 

    validate_presence_of :name, :shipping_address, :billing_address, unless: :is_admin 
end 

Пользователей, созданных с помощью регулярного потока (страницы регистрации) откажет, чтобы спастись, если вы не предоставите всю информацию. Но есть более простой поток для создания админ:

User.create(email: '[email protected]', is_admin: true) 
# you do this in rails console or rake task, for example 

Естественно, вы не должны принимать этот «частный» флаг из HTML форм (метод strong_params в контроллере).

Думая немного больше об этом примере: вы можете захотеть сохранить этот флаг в базе данных (это администратор пользователя или нет). Но я надеюсь, что это все равно проиллюстрирует идею.

+0

Значит, нет смысла использовать реальные переменные переменные, не так ли? –

+0

@ chris987: не в моей практике, нет. Но я уверен, что существуют реальные действительные случаи использования. –

Смежные вопросы