我使用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
......绝对没有。
原因可能是什么?