这是我的代码第一个
def participation_earning(partcpnt_usr)
case show_participant_users
when Array
puts "***********Inside Array Statement - #{Time.now} *********"
sleep 1
show_participant_users.find do |show_prtcpnt_usr|
show_prtcpnt_usr.show_participant_id == partcpnt_usr.participant_id
end
when ActiveRecord::Relation
puts "***********Inside Relation Statement - #{Time.now} *********"
sleep 1
show_participant_users.where(:show_participant_id => partcpnt_usr.participant_id).first
else
puts "Will always go in else part"
end
end
很少有解释show_participant_users
是用户之间的关系对象
@user.show_participant_users
现在困扰我的是,即使show_participant_users
的类是一个数组,它仍会进入其他区块,不知道为什么(只是为了确认show_participant_users
不是nil
它是一个数组)
相反,下面的代码按预期工作
array_fields = []
case array_fields
when Array
puts "Ruby Array"
when Hash
puts "Ruby Hash"
end
除了简洁之外我还不想使用if / else语句之外的任何其他想法
感谢你
答案 0 :(得分:1)
使用:
case show_participant_users.class
例如:
array_fields = User.where("id > 5").limit(2) #return the array
array_fields.class #gives ActiveRecord::Relation and not Array
答案 1 :(得分:0)
您应该在控制台中打印对象的类和祖先,以确保该类符合您的期望。
从语法来看,它是一个方法调用,因此它可能有意想不到的类。
答案 2 :(得分:0)
def participation_earning(partcpnt_usr)
case partcpnt_usr
when Array
puts "***********Inside Array Statement - #{Time.now} *********"
sleep 1
show_participant_users.find do |show_prtcpnt_usr|
show_prtcpnt_usr.show_participant_id == partcpnt_usr.participant_id
end
when ActiveRecord::Relation
puts "***********Inside Relation Statement - #{Time.now} *********"
sleep 1
show_participant_users.where(:show_participant_id => partcpnt_usr.participant_id).first
else
puts "Will always go in else part"
end
end