ActiveRecord中* _ids方法的问题

时间:2016-02-09 20:48:19

标签: ruby-on-rails rails-activerecord nested-attributes ruby-on-rails-4.2

我使用rails 4.2.5和postgresql。

我有一个这样的模型:

class PlatformLink < ActiveRecord::Base
  belongs_to :platform
  belongs_to :download_link
end

class Platform < ActiveRecord::Base
  has_many :platform_links
  has_many :download_links, through: :platform_links
end

class DownloadLink < ActiveRecord::Base
  has_many :platform_links
  has_many :platforms, through: :platform_links
end

现在,我有一个带有几个复选框的表单,我可以在其中选择哪些平台连接到某个download_link,填充这样的参数:

{ :download_link => { :id => 7, :platform_ids => ['2', ''] } }

我做了:

download = DownloadLink.find(7)
download.platform_ids = download_params[:platform_ids]
download.save!

问题是,保存后,我的模型不会在平台ID 2和此download_link之间创建任何关系。

我试图像这样隔离问题,我注意到了这一点。这工作正常:

DownloadLink.create(platform_ids: ['2'])

但是这个:

download = DownloadLink.find(something)
download.platform_ids = [2, 3]
download.save

......绝对没有。

原因可能是什么?

0 个答案:

没有答案