2016-03-30 6 views
0

中に、配列表のcolumに項目を追加します。基本的に私はpostgresのを使用して配列として<code>quote</code>テーブルの列を持って作成

... 

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が保存されていない:私は引用符に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 

。アイデア?コンソールの画像(プリ画像):

enter image description here

答えて

0

の引用は、多くの企業があり、当社は多くの引用符を持っていますか?それが本当であれば、N対Nの関係があり、関係モデルが必要です。

このリレーションシップモデルの名前は、カンパニークォートという名前が付けられていますが、あなたのケースでは入札単価を使用できます。その後、それらを関連付ける必要があります。

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 

documentationをご覧ください。

+0

こんにちは。そうですか。その場合、クライアントは入札する企業の数xを選ぶことができますが、それらの企業を割り当てる方法は次のとおりです。 '@quote = current_user.quotes.build(quote_params.push({:company_id => company_id}))' – Sylar

+0

'{company_ids => [8]} 'のようにhas_many関係であるので、複数形と配列でそれを使わなければなりません。 –

関連する問題