class User < ActiveRecord::Base
has_many :seats
has_many :events, :through => :seats
end
class Event < ActiveRecord::Base
has_many :seats
has_many :users, :through => :seats
end
class Seat < ActiveRecord::Base
belongs_to :user
belongs_to :event
end
Chcę do tego napisać istrukcję warunkową: Jeżeli znaleziono :user.id w poprzednim :event wykonaj @seat.move_to_bottom
if @seat.user_id < 3
@seat.move_to_top
else
@seat.move_to_bottom
end
Szukam, szukam i nie mam pomysłu na pogrubioną część.
if current_event.previus.seats.where(:user_id => @seat.user_id).exists? #jak nie to działa exists? to count > 0
do sth
w klasie event zdefiuniuj sobie metodę previous:
def previous
Event.where("created_at < ?", self.created_at).order("created_at DESC").first
end
poza tym, jeśli już używasz acts_as_list to napisz sobie metodę, która robi dokładnie to, co chcesz uzyskać. Wątpię, że chcesz przenieść siedzenie na sam dół. Metoda ta może korzystać z metod dodanych przez acts_as_list, ale będzie Ci łatwiej używać obiektów.
Następnym razem, gdy próbujesz opisać nam dziedzinę swojego problemu staraj się używać języka naturalnego, np.:
[quote=piotrj]Co rozumiesz przez “w poprzednim event”? Poprzednim względem czego? Czy chodzi o to czy user już kiedyś był w jakimkolwiek evencie?
Poza tym:
W poprzednim wydarzeniu, gdyż miejsce dodaje się do odpowiedniego wydarzenia, można to zobaczyć na stronie.
Pomysł jest taki, że jeżeli użytkownik brał udział w poprzednim wydarzeniu niech zostanie przesunięty na koniec listy, gdyż zamierzam dodać limit i jeżeli zbyt dużo użytkowników zarezerwuje sobie miejsce to zostanie on wypchnięty poza listę
Jeżeli bedzie to za trudne to wystarczy mi jeżeli zostanie sprawdzone czy użytkownik już kiedyś był w jakimkolwiek wydarzeniu
@seat.user_id < 3 to tylko przykład na jakim aktualnie testuję dodawanie a dokładniej -> if @seat.event_id == 1
Dziękie za odpowiedzi już próbuję wdrożyć wasze podpowiedzi.
if @seat.event.previous.seats.where(:user_id => @seat.user_id).exists?
@seat.move_to_bottom
else
@seat.move_to_top
end
Dzięki wielkie powyższy kod działa - tylko jeden błąd się pojawia (właśnie często mi się on przytrafia, przy różnych okazjach), mianowicie przy dodawaniu użytkownika do pierwszego wydarzenia wyskakuje błąd -> undefined method `seats’ for nil:NilClass, wiem o co chodzi ale jak sobie z nim najlepiej poradzić?
Rozwiązałem powyższy problem za pomocą if @seat.event.id == 1