c = "(f.profile_id = #{self.id} OR f.friend_id = #{self.id})"
c += AND + "(CASE WHEN f.profile_id=#{self.id} THEN f.friend_id ELSE f.profile_id END = p.id)"
c += AND + "(CASE WHEN f.profile_id=#{self.id} THEN f.profile_rejected ELSE f.friend_rejected END = 1)"
c += AND + "(p.banned = 0)"
Je en ai besoin à utiliser dans une relation has_many comme ceci:Rails conditions has_many
has_many :removed_friends, :conditions => ???
comment puis-je y mettre le self.id ?, ou comment passer je n'y l'id? Ensuite, je veux utiliser le plugin will_paginate:
@profile.removed_friends.paginate(:page => 1, :per_page => 20)
Merci pour votre aide
EDIT:
class Profile < ActiveRecord::Base
has_many :friendships
has_many :removed_friends, :class_name => 'Profile', :through => :friendships, :conditions =>
"(friendships.profile_id = #{self.id} OR friendships.friend_id = #{self.id})"
"AND (CASE WHEN friendships.profile_id=#{self.id} THEN friendships.profile_rejected ELSE friendships.friend_rejected END = 1)" +
"AND (p.banned = 0)"
end
class Friendship < ActiveRecord::Base
belongs_to :profile
belongs_to :removed_friend, :class_name => 'Profile', :foreign_key => "(CASE WHEN friendships.profile_id = #{self.id} THEN friend_id ELSE profile_id END)"
end
comme ça ça ne marche vraiment pas: s –
Vous devez utiliser des guillemets simples pour que cela fonctionne. Je l'utilise tout le temps. –
J'ai mis à jour ma réponse. Dites-moi si cela marche pour vous. –