2016-08-23 20 views
1

在軌道4應用隨着has_many :through關係不同的行與Rails的存儲陣列參數連接表

city.rb

has_many :business_type_cities 
has_many :business_types, :through => :business_type_cities 

business_type.rb

has_many :business_type_cities 
has_many :cities, :through => :business_type_cities 

businesstypecity .rb

belongs_to :buness_types 
belongs_to :cities 

business_types_controller.rb

def create 
    if business_type.save 
    BusinessTypeCity.create :business_type_id => business_type.id,  :city_id => params[:cities] 
    flash[:notice] = 'Business Type Created Successfully!' 
    redirect_to admin_business_types_path 
    else 
    flash[:error] = business_type.errors.full_messages.join(', ') 
    end 
end 

但這裏city_idarray,我想存儲business_type_idcity_id一行,其他city_id將不同行中存儲與同business_type_id

響應我得到的是以下幾點:

"business_type"=>{"name"=>"test", "review_type"=>"review_with_rating"}, "cities"=>["293", "1091", "1200"], "commit"=>"Create Business Type" 

感謝

+0

簡單,我需要迭代PARAMS [:城市]與每個做。雖然如果你有更好的答案,那麼對此感興趣。感謝您的時間。 –

回答

1

通常的做法是,你在評論所說的東西。以下是我通常所做的

existing_city_ids = business_type.city_ids 
business_type.city_ids = existing_city_ids | params[:cities].map(&:to_i) 

首先獲取當前業務類型的所有現有城市id。然後結合新的,使用||以避免重複,並將params[:cities]映射到int以匹配business_type.city_ids (returns an array of int)