Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails联合半相关数据的方法_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails联合半相关数据的方法

Ruby on rails Rails联合半相关数据的方法,ruby-on-rails,Ruby On Rails,我有以下代码片段来获取用户已订阅的所有类类型,以及用户尚未订阅的所有类类型,并将其显示在UI中。我使用的是订阅模式,因为它保存了我向用户显示的历史价格 @subscriptions = Subscription.where(user_id: current_user.id) subscription_ids = @subscriptions.pluck(:class_type_id) classtypes_not_subscribed_to = ClassType.where.not(id: s

我有以下代码片段来获取用户已订阅的所有类类型,以及用户尚未订阅的所有类类型,并将其显示在UI中。我使用的是订阅模式,因为它保存了我向用户显示的历史价格

@subscriptions = Subscription.where(user_id: current_user.id)
subscription_ids = @subscriptions.pluck(:class_type_id)
classtypes_not_subscribed_to = ClassType.where.not(id: subscription_ids)

classtypes_not_subscribed_to.each do |c|
        @subscriptions << Subscription.new(class_type_id: c.id, price: c.price)
    end
@subscriptions=Subscription.where(用户标识:当前用户标识)
订阅\u id=@subscriptions.pull(:class\u type\u id)
classtypes\u not\u subscribed\u to=ClassType.where.not(id:subscription\u id)
未订阅的类类型。每个都可以|

@订阅我建议您为类创建作用域,它确实使代码更干净

    class Subscription
      named_scope :of, lambda {|user| {
        conditions: { user_id: user.id }
      } }
    end

    class ClassType
      named_scope :not_subscribed_for, lambda { |user|
        subscribed_classes_ids = Subscription.of(user).all.pluck(:class_type_id)
        { conditions: ["id NOT IN ?", subscribed_classes_ids] }
      }
    end
然后您只需调用
ClassType.not\u subscribed\u for(某些用户)
。当然,名字是任意的