一个qazxsw poi qazxsw poi qazxsw poi。我有两种方法,一种可以找出这件作品是否可用,另一种可以找出一件作品是否有可用的作品。
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
有available?
,我想要它返回Item
,如果没有true
,我希望它返回Item
。我的代码背后的理论是该方法返回pieces
,除非有一块返回false
。当我在控制台中执行此操作时,我得到的是散列中的碎片,而不是真或假。
任何人都可以解决我的问题或告诉我更好的方法吗?
如果您需要检查项目是否至少有一个可用部分,则该方法可能如下所示:
false
使用true
:
def available?(current_user, user, item)
item.pieces.each do |piece|
return true if piece.available?(current_user, piece)
end
false
end
从你的代码中推断我认为Enumerable#any?
中的def available?(current_user, user, item)
item.pieces.any? do |piece|
piece.available?(current_user, piece)
end
end
方法不需要第二个参数,因为它是Piece的实例方法。所以我建议你重构一下这个方法:
available?
它会给你一个更干净的界面。