J'appelle une gamme de produits recommandés (sur la base predictor-gem
) et que vous voulez exclure les produits du current_user
de cet ensemble. Je pense que j'utilise la bonne condition pour cela (" != ?")
mais juste pas de la bonne façon. @products_rec
devrait donner ce tableau final.Comment exclure un tableau d'ID d'une méthode de recherche?
Voici le code spécifique dans mon product_controller.rb
:
recommender = ProductRecommender.new
products = current_user.products
@product_rec = (recommender.similarities_for("product-#{@product.id}")).map {|el| el.gsub(/(.*\-)[^\d]*/, "")}
@products_rec = Product.find(@product_rec, :conditions => ["id != ?", products.id])
et voici mon modèle, product.rb:
class Product < ActiveRecord::Base
include Reviewing
include PublicActivity::Model
tracked
extend FriendlyId
friendly_id :name, use: [:slugged, :finders]
belongs_to :category
belongs_to :benefit
has_many :subscriptions
has_many :users, through: :subscriptions
has_many :benefits
has_many :projects, through: :benefits
belongs_to :user
validates :name, presence: true, length: { maximum: 200 }
validates :gtin, presence: false
validates :content, presence: false, length: { maximum: 2000 }
validates :video, presence: false
validates :tag, presence: false
validates :project, presence: false
validates :category, presence: false
validates :user, presence: false
has_attached_file :image, :styles => { :medium => "680x300>", :thumb => "170x75>" }
validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
end
Je veux exclure les produits du current_user
, sur la base des utilisateurs par le biais abonnements (voir modèle).
Comment puis-je obtenir ce travail, des idées?
Code final: Sur la base de la réponse de @Humza
, j'ai ajouté le code de travail suivant à mes product_controller.rb
:
recommender = ProductRecommender.new
products = current_user.products.select("id")
@product_rec = (recommender.similarities_for("product-#{@product.id}")).map {|el| el.gsub(/(.*\-)[^\d]*/, "")}
@products_rec_array = Product.find(@product_rec)
@products_rec = Product.where(id: @products_rec_array).where.not(id: products)
Quelle version de Rails que vous utilisez? – Pavan
J'utilise Rails 4 –
@Pavan des idées sur la façon dont je pourrais résoudre ce problème? :) –