我正在构建一个rails应用程序,我需要有产品和订单模型。
我认为逻辑路径是另一个名为OrdersProduct的模型,因为订单可以订购许多产品,我在其中放置product_id
,order_id
(与其他两个模型匹配) )和amount
字段。
好吧,我的问题是如何从OrdersProduct记录中访问每个产品信息?
关键是我可以与belongs_to :product
模型建立OrdersProduct
关联,但在has_many :orders_products
Product
class Customer < ActiveRecord::Base
# id
# name
# etc…
end
class Product < ActiveRecord::Base
# id
# name
# etc…
end
class Order < ActiveRecord::Base
# id
# customer_id
# etc…
end
class OrdersProduct < ActiveRecord::Base
# order_id
# product_id
# amount
end
中添加Order.products
是没有意义的模型。
模型似乎是这样的:
> TEST=`echo -e "hello\\nworld"`
> echo $TEST
hello
world
访问print "Enter either 5 or 10 or 15 or 20): ";
my $obfuscation_percentage = <STDIN>;
chomp $obfuscation_percentage;
if ($obfuscation_percentage ne 5 or 10 or 15 or 20 ){
print "Enter valid number: "; }
$obfuscation_percentage = <STDIN>;
chomp $obfuscation_percentage;
并获取与OrdersProduct模型相关的产品集合的最佳方式是什么?
答案 0 :(得分:2)
您想要的是使用Has and belongs to many through关联。
class Order < ActiveRecord::Base
has_many :orders_products
has_many :products, through: :orders_products
end
class Product < ActiveRecord::Base
has_many :orders_products
has_many :orders, through: :orders_products
end
class OrdersProduct < ActiveRecord::Base
belongs_to :order
belongs_to :product
end
现在,在商业术语中,订购的产品通常被引用为LineItem
,因此您可以指定orders_products
表,而不是使用line_items
表。
class Order < ActiveRecord::Base
has_many :line_items
has_many :products, through: :line_items
end
class Product < ActiveRecord::Base
has_many :line_items
has_many :orders, through: :line_items
end
class LineItem < ActiveRecord::Base
belongs_to :order
belongs_to :product
end
答案 1 :(得分:-1)
您可以摆脱OrdersProduct
模型。
只需要以下型号:
class Customer < ActiveRecord::Base
has_many :orders
# id
# name
# etc…
end
class Order < ActiveRecord::Base
belongs_to :customer
has_many :products
# id
# customer_id
# etc…
end
class Product < ActiveRecord::Base
belongs_to :order
# id
# name
# order_id
# etc…
end
现在,您可以致电customer.orders.first.products
或order.products
,因为customer
和order
是实例。