Ruby on rails 在创建期间将项添加到数组表列

Ruby on rails 在创建期间将项添加到数组表列,ruby-on-rails,postgresql,ruby-on-rails-4,Ruby On Rails,Postgresql,Ruby On Rails 4,我有一个quote表列作为使用postgres的数组: ... t.integer "company_id", array: true, default: [] ... 从本质上说,我是说,这是一个报价为许多公司。这就像一个投标,许多企业都可以在一个报价上投标 quote.rb: has_many :companies has_many :quotes has_one :company # depending on registration type company.rb中未设置任何

我有一个
quote
表列作为使用postgres的数组:

...

t.integer  "company_id", array: true, default: []

...
从本质上说,我是说,这是一个报价为许多公司。这就像一个投标,许多企业都可以在一个报价上投标

quote.rb:

has_many :companies
has_many :quotes
has_one :company # depending on registration type
company.rb中未设置任何内容

user.rb:

has_many :companies
has_many :quotes
has_one :company # depending on registration type
该过程是,用户可以邀请多个公司对报价进行投标,其中每个公司的
公司id
都作为
参数传递。我可以创建报价,但
公司id
未保存:

def create
  company_id = 8 # hard coded for now
  @quote = current_user.quotes.build(quote_params.push({:company_id => company_id}))

...
end

private
 def quote_params
  params.require(:quote).permit(:a, :b, :company_id => [])
 end
我无法将
公司id
推到报价单上。思想?控制台图片:


一个报价有很多公司,而一个公司有很多报价?如果这是真的,那么你有一个N对N的关系,你应该有一个关系模型

这种关系模式将被命名为CompanyQuote,因为没有更好的模式,在您的情况下,您似乎可以使用Bid。那你就得把它们联系起来

class Quote
  has_many :bids
  has_many :companies, through: :bids
  # ...
end

class Company
  has_many :bids
  has_many :quotes, through: :bids
  # ...
end

class Bid
  belongs_to :company
  belongs_to :quote
  # ...
end

class QuotesController
  def create
    company_id = 8 # hard coded for now
    @quote = current_user.quotes.build(quote_params.push({:company_ids => [company_id]}))

  ...
  end

  private

  def quote_params
   params.require(:quote).permit(:a, :b, :company_ids => [])
  end
end

请看一下。

您好。我懂了。在这种情况下,客户可以选择x数量的公司进行竞价,但如何分配这些公司:
@quote=current\u user.quotes.build(quote\params.push({:company\u id=>company\u id}))
在控制器中,您必须以复数形式和数组形式使用它,因为这是一种多关系,如
{company\u id=>[8]}