从方法内的块方法返回true或false

Dol*_*Dol 2 ruby

Item has_many Pieces.我有两种方法,一种可以找出这件作品是否可用,另一种可以找出一件作品是否有可用的作品.

  # in piece.rb
  def available?(current_user, piece)
    if piece.status == 1
      true
    elsif piece.status == 2
      false
    elsif piece.status == 3
      true if piece.friend_id == current_user.id
    end
  end

  #in item.rb
  def available?(current_user, user, item)
    false
      item.pieces.each do |piece|
        if piece.available?(current_user, piece)
          true
        end
      end
  end
Run Code Online (Sandbox Code Playgroud)

我的available?方法Item是错的.我希望它返回,true如果Item有可用pieces,false如果没有.我的代码背后的理论是该方法返回,false除非有一个返回的片断true.当我在控制台中执行此操作时,我得到的是散列中的碎片,而不是真或假.

任何人都可以解决我的问题或告诉我更好的方法吗?

tok*_*and 10

def available?(current_user, user, item)
  item.pieces.any? do |piece|
    piece.available?(current_user, piece)
  end
end
Run Code Online (Sandbox Code Playgroud)