我使用postgres有一个quote
表列作为数组:
...
t.integer "company_id", array: true, default: []
...
基本上,我说的是这么多公司的报价。这就像一个招标,很多企业可以报价。
quote.rb:
has_many :companies
company.rb中没有设置任何内容。
user.rb:
has_many :quotes
has_one :company # depending on registration type
流程是,用户可以邀请多家公司对报价进行出价,其中company_id
每个都作为params
传递。我可以创建报价,但company_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
我无法将company_id
推到引号上。想法?控制台的图片:
答案 0 :(得分:0)
报价有很多公司,公司有很多报价?如果这是真的,那么你有一个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