Ruby on Rails - я могу изменить значение атрибута, прежде чем это назовут?

Это невозможно, потому что взаимодействие с текстовыми полями всегда делается однопоточным и обрабатывается циклом сообщения / события, где всегда обрабатывается одно сообщение / событие за один раз.

5
задан sker 8 October 2008 в 07:23
поделиться

3 ответа

Я рекомендовал бы использовать синтаксис квадратной скобки ([] и []=) вместо read_attribute и write_attribute. Синтаксис квадратной скобки короче и разработан для обертывания защищенных read/write_attribute методов.

def brand
  original = self[:brand]
  transform(original)
end

def brand=(b)
  self[:brand] = reverse_transform(b)
end
10
ответ дан 18 December 2019 в 09:11
поделиться

Вместо того, чтобы получать доступ к @attributes непосредственно, необходимо использовать read_attribute и write_attribute:

def brand
  b = read_attribute(:brand) 
  b && b.transform_in_some_way
end

def brand=(b)
  b && b.transform_in_some_way
  write_attribute(:brand, b)
end
7
ответ дан 18 December 2019 в 09:11
поделиться

В Вашей модели можно переопределить вызов метода brand.

def brand
#code to modify the value that is stored in brand
return modified_brand
end

Это позволит этому быть сохраненным как this_is_a_brand. Но, это будет возвращено как, "это - бренд".

0
ответ дан 18 December 2019 в 09:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: