mysql - Rails 使用连接表将数组参数存储在不同的行中

标签 mysql ruby-on-rails arrays ruby mysql-workbench

在 rails 4 应用程序中与 has_many :through 关系

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"

谢谢

最佳答案

通常的方法是您在评论中建议的方法。这是我通常做的事情

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(返回一个数组的 int)

关于mysql - Rails 使用连接表将数组参数存储在不同的行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39095158/

相关文章:

php - mysql 返回主键重复错误

java - Java SOAP Web 服务应用程序中的用户登录方法不起作用

java - 如何使用java制作mysql数据库

javascript - 将按升序排序的日期数组合并为日期范围数组

c - 计算二维字符串中的字符数

sql - 即使对于非并发插入/更新,大型 MyISAM 表也很慢

ruby-on-rails - Rails Active Storage & AWS S3 : How to attach image to model through seeds. rb 然后将其存储在 S3 私有(private)存储桶中?

html.erb - 如何用空 div 填充最后一行

ruby-on-rails - 非 ruby​​ 站点上的 ruby​​ 错误

javascript - 如何分割字符串并重复字符?