2017-06-12 10 views
0

上のRubyは私は次のデータベースの設計を持っています。例えばネストされた形のRails

Order 1 has a size attribute equal to medium

Order 2 has a size attribute equal to medium

私は、アクティブな管理に注文を作成するときにサイズを選択することができるようにしたいです。

注文モデル:

class Order < ApplicationRecord 
    has_one :order_size 
    accepts_nested_attributes_for :order_size, :allow_destroy => true 
end 

注文サイズモデル:また

class OrderSize < ApplicationRecord 
    belongs_to :orders 
end 

、OrderSizeテーブルは、ORDER_ID列を持たなければなりませんか?

モデルは権利であれば、私は知らないが、activeadminは私にこのエラーを与えている:

undefined method `order_id' for #<Order:0x007fb980e34b80> 

マイactiveadminモデル

オーダーサイズ:

ActiveAdmin.register OrderSize do 
    permit_params :name 
end 

順序:

ActiveAdmin.register Order do 
    permit_params :due_date, :comments, :approved, :order_size_id, 
       order_size_attributes: [:id, :name,:_destroy] 

    form do |f| 
    f.inputs "Admin Details" do 
     f.input :due_date 
     f.input :order_size 
     f.input :comments 
     f.input :approved 
    end 
    f.actions 
    end 

end 

答えて

0

I don't know if the models are rights but activeadmin is giving me this error:

undefined method `order_id' for Order:0x007fb980e34b80

はい、RailsはRDBMSと通信するforeign_key(order_id)の関連モデル(順序)ためObjectRelationalMapping(ORM)を期待。 order_idの移行を作成し、rake db:migrateを実行して問題を解決してください。

またbelongs_toまたはhas_oneため関連名単数でなければなりません。関連がhas_one :order_sizeあるよう

class OrderSize < ApplicationRecord 
    belongs_to :order 
end 

また、あなたはordersorder_size_idを持つべきではありません。代わりに、私が上記のように、あなたはorder_sizesorder_idを持っているはずです。

+0

しかし、私は異なる注文で同じ注文サイズ(例えば媒体)を持つことができるでしょうか? – exsnake

+0

@exsnakeそれを満たすためにあなたの団体を変えるべきではないかと思います! – Pavan

+0

@pavinあなたはそれで私を助けることができますか?私は、注文はただ一つのサイズを持つことができ、サイズは多くの注文の一部であることができると思います。私は 'belongs_to'を間違って使用していますか? – exsnake

関連する問題