使用has_many :through
关系的rails 4应用程序
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_id
为array
,我希望将business_type_id
和city_id
存储在一行中,其他city_id
将存储在具有相同行的不同行中{ {1}}。
我得到的回应如下:
business_type_id
由于
答案 0 :(得分: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)