在rails中遇到多对多关系的问题。我有三个模态:
订单包含很多项目,反之亦然。
查询Item.find(1).orders工作正常,但是当我尝试Order.find(1).items它返回:
NoMethodError: undefined method `items' for #<Order:0x007fcad3bb3258>
这是我的代码:
Schema.rb
create_table "itemizeds", force: :cascade do |t|
t.integer "item_id", limit: 4
t.integer "order_id", limit: 4
t.integer "quantity", limit: 4
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "items", force: :cascade do |t|
t.string "title", limit: 255
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "orders", force: :cascade do |t|
t.integer "customer_id", limit: 4
t.integer "store_id", limit: 4
t.integer "order_id", limit: 4
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.decimal "price", precision: 8, scale: 2
t.decimal "discount", precision: 8, scale: 2
end
Order.rb(模特)
class Order < ActiveRecord::Base
has_many :itemized
has_many :items, :through => :itemized
end
Item.rb(model)
class Item < ActiveRecord::Base
has_many :itemized
has_many :orders, :through => :itemized
end
Itemized.rb(模特)
class Itemized < ActiveRecord::Base
belongs_to :item
belongs_to :order
end
不确定是否有干扰,但也有商店模式,商店有很多订单。
感谢您的帮助和时间!
答案 0 :(得分:0)
如果我查看http://guides.rubyonrails.org/association_basics.html中的多对多关联,我会看到
class Physician < ActiveRecord::Base
has_many :appointments
has_many :patients, through: :appointments
end
class Appointment < ActiveRecord::Base
belongs_to :physician
belongs_to :patient
end
class Patient < ActiveRecord::Base
has_many :appointments
has_many :physicians, through: :appointments
end
所以我认为这是一个多元化的问题。请改为:through => :itemizeds
。