Witam,
Robię panel w rails_admin i mam problem z relacją has_many :through.
Generalnie sytuacja wygląda tak, że mam 2 modele połączone tą relacją, poobcinałem modele żeby było bardziej przejrzyście.
class Car < ActiveRecord::Base
has_many :car_licenses
has_many :licenses, :through => :car_licenses
def licenses_enum
if(self.partner.nil?)
{ "Brak" => "0"}
else
License.where('partner_id=?',self.partner_id).map { |c| [c.description, c.id ] }
end
end
end
class License < ActiveRecord::Base
has_many :car_licenses
has_many :cars, :through => :car_licenses
end
class CarLicense < ActiveRecord::Base
attr_accessible :car_id, :license_id
belongs_to :car
belongs_to :license
end
w configu rails_admin mam dodane w
config.model 'Car' do
configure :fishery_licenses do
visible(false)
end
field :licenses do
multiple true
end
end
rails_admin tworzy ładną listę wielokrotnego wyboru ale przy zapisywaniu rekordu mam błąd
ActiveRecord::AssociationTypeMismatch in RailsAdmin::MainController#edit
License(#76184820) expected, got String(#69215870)
to jest dość jasne ponieważ patrząc na źródło jakie wygenerował rails_admin to oczekiwany jest obiekt License a przekazujemy “1”
id="car_licenses" multiple="multiple" name="car[licenses][]"><option value="1">testowa </option>
co można z tym zrobić? Szukam info od jakiegoś czasu i jedyne co znalazłem, to żeby zrobić partial i zmienić tak widok, żeby było
name="car[licenses_id][]"
Powyższego jeszcze nie testowałem, prośba o pomoc bo jestem dość świeży w temacie