Warunek if "rekord" exist?

Tak wyglądają moje relacje:

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ęść.

Co rozumiesz przez “w poprzednim event”? Poprzednim względem czego? Czy chodzi o to czy user już kiedyś był w jakimkolwiek evencie?

Poza tym:

    if @seat.user_id < 3

Ta linie nie ma żadnego sensu chyba. No chyba że faktycznie interesuje cię czy user podpięty do danego seat’a ma id mniejsze od 3.

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:

    if @seat.user_id < 3

Ta linie nie ma żadnego sensu chyba. No chyba że faktycznie interesuje cię czy user podpięty do danego seat’a ma id mniejsze od 3.[/quote]
Dziękuję za odpowiedź i już wyjaśniam:
app na heroku -> http://ekorozwoj.heroku.com/events github -> https://github.com/regedarek/ekorezerwacja

  1. W poprzednim wydarzeniu, gdyż miejsce dodaje się do odpowiedniego wydarzenia, można to zobaczyć na stronie.
  2. 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ę
  3. Jeżeli bedzie to za trudne to wystarczy mi jeżeli zostanie sprawdzone czy użytkownik już kiedyś był w jakimkolwiek wydarzeniu
  4. @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