Рекомендуется использование в вашем случае:
модели портфель
class Portofolio < ActiveRecord::Base
attr_accessible :sector_ids, ....
has_many :portofolio_sectors
has_many :sectors, through: :portofolio_sectors
end
в форме
<%= f.collection_select :sector_ids, Sector.order(:name), :id, :name, {:prompt => "Please Select a Sector"}, {multiple:true} %>
portofolio_sectors модели
class PortofolioSector < ActiveRecord::Base
belongs_to :portofolio
belongs_to :sector
end
модель сектора
class Sector < ActiveRecord::Base
has_many :portofolio_sectors
has_many :portofolios, through: :portofolio_sectors
end
http://guides.rubyonrails.org/association_basics.html#choosing-between-has-many-through-and-has-and-belongs-to-many
, и это может быть интересно для вас, должны быть про счет:
http://railscasts.com/episodes/258-token-fields-revised
обновление
, когда вы будете добавлять sectors
к portofolio
multiple select
использования, sector_ids
будет заполняться с array
идентификаторов, которые принадлежат Sector
, а на рельсы представить прочтет эту param[:sector_ids]
, что будет так: [2,5,17,8]
и создаст 4 (в этом случай 4) portofolio_sectors
записи с sector_id = 2, 5, 17, 8
и для каждого из этих porofolio_id
будет ток portofolio.id
напр: 2. В результате вы будете иметь:
portofolio_sectors стол:
id portofolio_id sector_id
1 2 2
2 2 5
3 2 17
4 2 8
Как создать portofolio_sectors из sector_ids вы также можете увидеть эту ссылку: http://railscasts.com/episodes/382-tagging, см. Метод tag_lis.
В связи вы можете получить доступ к секторам с: portofolio.sectors
, это будет array
из sectors
, который принадлежит к этому portofolio
.
'{: multiple => true}' создает проблему, я уверен, что вы можете сохранить один 'sector_id' без использования. – Salil
Я хочу сохранить несколько идентификаторов, хотя любые идеи? – Richlewis
Изменить вашу модель автомобиля? У вас есть только один идентификатор сектора. –