我还没有对 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] 不为空。上面的验证调用似乎正在查看其他内容,因为无论如何它总是空的。我缺少什么?非常感谢任何帮助。
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|
最佳答案
无需设置 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
关于ruby-on-rails - 虚拟属性验证 Rails 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9678042/