Я хочу, чтобы определить роль атрибута в моей пользователя модели, когда я установил врач атрибут, чтобы знать, что теперь, когда этот атрибут определен экземпляра Пользователя имеет роль из : врач (как это перечисление).Определить другой атрибут в инкубаторе
Это работает как роль определена, но роль ошибочно отнесены к другому типу перечисления, как показано в моем RSpec тест
enum role: [:assistant, :physician, :patient]
def physician=(value)
write_attribute(:role, "physician")
super(value)
end
RSpec:
User is a physician should only be a physician
Failure/Error: expect(user.role).to eq('physician')
expected: "physician"
got: "assistant"
(compared using ==)
# ./spec/models/user_spec
На самом деле я пытался повторите эту процедуру вручную в Rails console
user = User.new
physician = Physician.new
user.physician = physician
user.physician?
=> false
user.role
=> "assistant"
Я подозреваю, что write_attribute не работает хорошо с Enums ...
P.D. Я также попытался с write_attribute (: роль,: врач) но он устанавливает значение роли всухую
Почему бы не просто «self.role =« assistant »? –