Rails Cookie问题

inf*_*ity 5 ruby browser cookies ruby-on-rails

我在rails应用程序的ruby中有以下新方法:

def new
   if cookies[:owner].empty?
     cookies[:owner] = SecureRandom.hex
   end
   @movie = Movie.new
   @movie.owner = cookies[:owner]
end
Run Code Online (Sandbox Code Playgroud)

基本上,每个新用户都应该被发布一个识别它们的代码(尽管只是通过cookie).因此,当用户创建电影时,创建的cookie将存储在该owner字段中.

所以有两个问题:

  1. 使用.empty?当我从浏览器中删除cookie时,返回一个undefined method空的?' 为零:NilClass`

  2. 当我确实已经在浏览器中设置了cookie,然后创建了一个电影时,cookies [:owner]的值与@ movie.owner代码不同?

sja*_*ime 8

  1. cookies [:owner]将是nil(当它尚未设置时)或String(当它被设置时).你正在寻找的方法是blank?,而不是empty?

    2.1.0 :003 > nil.blank?
    => true
    
    2.1.0 :005 > "i'm not blank".blank?
    => false
    
    2.1.0 :006 > "       ".blank?
    => true
    
    Run Code Online (Sandbox Code Playgroud)
  2. 至于你的第二个问题:你在哪里调用这个save方法?你有没有Movie可以重写owner属性的模型回调?