Mam dwa modele i takie relacje między nimi
class Order
belongs_to :buy_id, :class_name => 'Currency', :foreign_key => 'buy_id'
belongs_to :sell_id, :class_name => 'Currency', :foreign_key => 'sell_id'
....
class Currency
has_many :orders
...
<%= f.select :sell_id, options_from_collection_for_select(@currency, "id", "name"),{}, :onchange => "get_order();" %>
i przy tworzeniu nowego zamówienia dostaję taki błąd
[code]ActiveRecord::AssociationTypeMismatch in OrdersController#create
Currency(#70337583827800) expected, got String(#70337555586940)[/code]
gdy wywalę asocjacje między modelami wszystko działa i już nie mam pomysłu co może być źle
hej, masz tu niezły bałagan.
Zacznij od zmiany nazwy tych relacji (wymyśl jakieś lepsze niż buy i sell).
Błąd (najprawdopodobniej) bierze się z tego, że w modelu masz akcesory do kolumn sell_id i buy_id, a do tego zdefiniowałeś sobie relacje, które te pierwotne akcesory nadpisały
W create przekazujesz do modelu paramsy, w których sell_id i buy_id zawierają stringi (zapewne są to id przed konwersją na inty), a settery buy_id= i sell_id= oczekują activerecorda.
Dzięki, odpowiedź jest trafiona w dziesiątkę. Już wszystko hula faktycznie relacje nadpisywały akcesory … źle zrozumiałem temat myślałem że relacje mają się tak samo nazywać jak pola w akcesorach.
Pozdro