Я не очень много сделал с этими виртуальными атрибутами Jquery-tokeninput или Rails, но при этом ударил головой о стену. Любая помощь или руководство приветствуются.Проверка подлинности виртуальных атрибутов Rails 3
У меня есть читатель виртуального атрибута в моем объявлении модели, мне нужно, чтобы проверить наличие:
attr_reader :classroom_tokens
validates :classroom_tokens, :presence => true``
с последующим геттер и сеттер:
def classroom_tokens=(ids)
self.classroom_tokens = ids.split(",")
end
def classroom_tokens
#Tried several things here
end
Я действительно просто нужно, чтобы убедиться, params [: announcement] [: classroom_tokens] не пуст. Вызываемый валидатор, похоже, смотрит на что-то еще, поскольку он всегда пуст, несмотря ни на что. Что мне не хватает? Любая помощь приветствуется.
Rails 3.1 рубин 1.9.2
UPDATE: Если я
#Announcement MODEL
attr_reader :classroom_tokens
#validates :classroom_tokens, :presence => true
def classroom_tokens=(ids)
@classroom_tokens = ids.split(",")
end
#Announcement_controller create action
puts "Token=>#{@announcement.classroom_tokens}|"
puts "Params=>#{params[:announcement][:classroom_tokens]}|"
я получаю:
Token=>|
Params=>7,13,12|
Валидации происходят на моделях. Модели не должны знать ничего о параметрах, которые использовались для их создания. classroom_tokens либо есть, либо нет. Вы усложняете ситуацию, пытаясь добавить свои собственные методы setter/getter в объекты ActiveRecord, поскольку ActiveRecord пытается это сделать для вас. Если вам нужно установить токены класса из массива comma_delineated, сделайте для этого другой метод. Если вам нужен специальный геттер, назовите его чем-то другим, кроме имени атрибута. –
Спасибо за ответ. С classroom_tokens, являющимся виртуальным атрибутом, я добавил установщика там, чтобы помочь с назначением comma_delineated и был под впечатлением, что я запутался с геттером. Сетчатка работает нормально. То, что я сделал, также было прочитано полностью, и все равно с тем же вопросом, где он думает, что он всегда пуст. – Yuri