W moich modelach mam użytkowników (User
) i historie (Story
), z relacją: user has_many stories
.Ruby on Rails: #any? zwraca nieprawidłową wartość
Zauważyłem coś dziwnego w mojej skorupie:
(dev) user.stories.any?
=> true
(dev) user.stories
Story Load (1.6ms) SELECT "stories".* FROM "stories" WHERE "stories"."user_id" = 703 ORDER BY created_at ASC [["user_id", 703]]
=> []
(dev) user.stories.any?
=> false
Jak to działa? Czy to z powodu mojego kodu, czy jest to jakiś błąd w Railsach i sposób, w jaki wysyła zapytanie do bazy danych?
@sawa co masz na myśli angielskie znaki interpunkcyjne? Czy mógłbyś być bardziej precyzyjny? Oczywiście nie jestem native speakerem i czasami po prostu nie widzę, gdzie jest błąd. – Mat
Dobra. Zasady są różne w różnych językach. W języku francuskim używamy spacji przed i po, gdy znak interpunkcyjny składa się z dwóch części. – Mat
możliwa usterka aktywnego związku szyn? zobacz źródło http://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-any-3F, która wywołuje http://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method- i-empty-3F i zwraca true 'if limit_value == 0' - może być optymalizacją, aby uniknąć wielokrotnego trafiania w bazę danych? Zastanawiam się, czy zachowuje się tak samo w środowisku TEST w szynach? – house9