Проверка виртуальных атрибутов Rails 3 - PullRequest
3 голосов
/ 13 марта 2012

Я не очень много сделал с этими виртуальными атрибутами Jquery-tokeninput или Rails, но с этим ударю головой об стену.Приветствуется любая помощь или руководство.

У меня в модели объявления есть виртуальный считыватель атрибутов, который мне нужен для проверки наличия:

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 [: announce] [: classroom_tokens] не пуст.Вышеуказанный вызов validate, похоже, смотрит на что-то еще, поскольку он всегда пуст, несмотря ни на что.Что мне не хватает?Любая помощь приветствуется.

Rails 3.1 Ruby 1.9.2

ОБНОВЛЕНИЕ: Если я сделаю

#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|

1 Ответ

8 голосов
/ 13 марта 2012

Вместо установки self.classroom_tokens, просто установите переменную экземпляра @classroom_tokens, а затем удалите метод classroom_tokens, поскольку вы неявно определяете его с помощью attr_reader. Код должен выглядеть так:

attr_reader :classroom_tokens
validates :classroom_tokens, :presence => true``

def classroom_tokens=(ids)
    @classroom_tokens = ids.split(",")
end
...