У меня есть модель User
, которая имеет столбец first_name
и last_name
.Как установить виртуальный атрибут в существующей модели?
Я хотел бы создать новый виртуальный атрибут под названием username
, который я могу получить доступ даже в файле маршрутов.
Я попытался сделать это:
attr_accessor :username
# getter
def username
@username
end
# setter
def username=(user)
@username = "#{user.first_name}.#{user.last_name}"
end
Но когда я пытаюсь установить его, я получаю неправильный номер ошибки аргументов.
[27] pry(main)> u.username=(u)
ArgumentError: wrong number of arguments (1 for 0)
from
[28] pry(main)> u.username = u
ArgumentError: wrong number of arguments (1 for 0)
from
u
является действительным User
запись.
В идеале, я хотел бы сделать две вещи. Я хотел был бы иметь возможность проверить user.username
для всех User
объектов в моей БД и он должен возвратить за вышеописанный метод setter
.
Как я могу это достичь?
Нет необходимости для меня, чтобы указать 'attr_accessor: username' на моей модели' User'? – marcamillion
Вы можете использовать только 'attr_accessor' вместо ручного ввода getter и setter. – kimrgrey
Если я использую только 'attr_accessor', как мне установить атрибут' username'? Как правило, с заявлением о назначении? – marcamillion