3

我没有对这个 Jquery-tokeninput 或 Rails 虚拟属性做很多事情,但我一直用这个把头撞到墙上。任何帮助或指导表示赞赏。

我的公告模型中有一个虚拟属性阅读器,我需要验证是否存在:

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

其次是getter和setter:

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

def classroom_tokens
    #Tried several things here
end 

我真的只需要确保 params[:announcement][:classroom_tokens] 不为空。上面的 validate 调用似乎在看别的东西,因为无论如何它总是空的。我错过了什么?任何帮助是极大的赞赏。

导轨 3.1 红宝石 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|
4

1 回答 1

8

而不是设置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
于 2012-03-13T03:58:56.473 回答