0

task.rb に次のコードがあります。

  before_update :update_inspector

  protected
  def update_inspector
    self.inspector_id = User.current.employee.id
  end

それは正常に動作します。

しかし、REST を使用してタスクを更新できるようにしたいと考えています。そのため、REST を使用する場合、現在のユーザーは存在しません。

だから、私はこれを試しました:

  before_update :update_inspector, :unless => User.current.employee.id.empty

  protected
  def update_inspector
    self.inspector_id = User.current.employee.id
  end

しかし、うまくいきません。

私も試しました:

:unless => User.current.employee.id = nil

助けてくれてありがとう !!!

更新1

私もこれを試しました:

before_update :update_inspector

protected
def update_inspector
  self.inspector_id = User.current.employee.id unless User.current.employee.id.nil?

end

更新2

これは私の user.rb にあるため、User.current.employee.id にアクセスできます。

 def self.current
   Thread.current[:user]
 end
 def self.current=(user)
   Thread.current[:user] = user
 end

更新3

私の最後の試みは私にこれを与えました:

  > undefined method `employee' for nil:NilClass

app/models/task.rb, line 30
---------------------------

``` ruby
 25   
 26     before_update :update_inspector
 27   
 28     protected
 29     def update_inspector
>  30       self.inspector_id = User.current.employee.id unless User.current.employee.id.nil?
 31   
 32     end
 33   
 34   end
4

2 に答える 2

0

問題はそれUser.currentですnilemployeeは で定義されたメソッドではないため、そのポイントを超えてメソッドにアクセスしようとすると、エラーが発生しNilClassます。条件を次のように変更する必要があります。

before_update :update_inspector, :if => lambda { User.current }
于 2013-04-27T18:55:22.130 に答える