ruby-on-rails - 虚拟属性验证 Rails 3

标签 ruby-on-rails virtual-attribute jquery-tokeninput

我还没有对 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/

相关文章:

javascript - 当我们按下空格键时在 tokeninput 中发出

javascript - token 输入自动完成功能无法正常使用

ruby-on-rails - 在长期运行的项目中重新设置 Rails 迁移的基线

ruby-on-rails - Rails 中的 Rspec 测试突然开始失败

ruby-on-rails - 使用移动客户端的查询参数获取 S3 预签名帖子 url

ruby-on-rails - 从 Ruby 中的数组中删除重复元素

ruby-on-rails - Rails 4 中的虚拟属性

ruby-on-rails - Rails 中的默认 getter 和 setter 是什么样子的?

ruby-on-rails - 多个字段的单个虚拟属性定义

css - 如何修改 jquery-token-Input css 文件以创建更大的文本区域和标记,如下所述?