@user_id = params[:user_id]
@picture = Picture.scoped
if @user_id.present?
@picture = @picture.where("user_id not in (?)", params[:user_id])
end
@picture = @picture.rand(@picture.count).first
respond_to do |format|
format.html { redirect_to(@picture) }
format.json { render :json => @picture }
end
Je reçois l'erreur suivante: NoMethodError à PicturesController # suivant méthode privée `rand » a appelé à []: ActiveRecord :: RelationObtenir un enregistrement aléatoire d'un ensemble de résultats
Au lieu de
@picture = @picture.rand(@picture.count).first
J'ai aussi essayé
@picture = Picture.offset(rand(Picture.count)).first
et obtenir cette erreur à la place: ActiveRecord :: StatementInvalid dans PicturesController # suivant Mysql2 :: Erreur: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près « ,6704131293122307 » à la ligne 1:. SELECT pictures
* FROM pictures
LIMIT 1 OFFSET 0,6704131293122307
Qu'est-ce que je fais mal, ou comment allez-je à propos de obtenir un enregistrement aléatoire à partir du tableau des résultats? Merci d'avance.
n'a pas besoin que @picture est une collection de lignes déjà lues de la base de données? s'il n'a qu'à retourner une ligne, aller chercher tout et en sélectionner un n'est pas bon;) –
@Andrian Je suis d'accord. Je viens juste d'un remplacement de sa ligne de trouble. – sawa
Cela fonctionne, mais selon les commentaires, j'ai marqué Adrian comme la meilleure réponse. Merci les gars! – areyling