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]}
。