Mam dwa modele połączone za pomocą has_and_belongs_to_many :model, :uniq => true
Mam pytanie związane z przechowywaniem tego w bazie danych. W bazie danych z czasem znajdują się zduplikowane powiązania np.
+---------+----------+
| a_id | b_id |
+---------+----------+
| 1 | 61 |
| 1 | 126 |
| 1 | 61 |
| 1 | 60 |
+---------+----------+
Czy to normalne, że takie powiązania mogą się powtarzać i czy to normalne (czy ja coś popsułem w implementacji u siebie), że powtarza się tylko jedno powiązanie 1-61?
Mam podobny problem, jednakże chodzi o pola select i powyższy podcast niestety nie pomaga. Posiadam jedno pole select dla kategorii nadrzędnej i trzy selecty z kategoriami podrzędnymi (zawierające wartości zależne od wartości pola nadrzędnego). Jednakże chcę uniknąć sytuacji kiedy ktoś wybierze dwie te same podrzędne kategorie. Moje “parameters” po wysłaniu formularza zawierają:
"branch_ids"=>["3",
"3",
"3",
"3"],
Chcę wyeliminować te powtórzenia w controllerze (a najlepiej w modelu przed zapisem obiektu). Problem w tym, że próbowałem różnych sposobów i nic. Nie wiem jak się do tego dobrać. Problem wydaje się banalny, toteż liczę na waszą pomoc.
OK, wracam z problemem ponownie. Przy akcji new -> create duplikaty nie są dodawane, przy edit -> update już tak. Dlaczego? Użyłem :uniq w HABTM w obu modelach.
Użyłem opcji “:uniq => true” w obu modelach połączonych relacją HABTM (obiekt (item) -> wiele kategorii (category)). Jeżeli trzy pola select zawierają tą samą kategorię to przy dodawaniu obiektu (new/create) do tabeli categories_items zapisywana jest jedna wartość. Natomiast w tej samej sytuacji, ale przy edycji obiektu wpis jest już dublowany (przy sytuacji gdy 2-3 selecty zawierają tą samą wartość). Czy ktoś wie dlaczego tak się dzieje?