Rails模型中2个表之间的关系如何?

时间:2014-02-07 10:41:06

标签: database-design ruby-on-rails

我在Rails中有两个表:

CURRENCIES:  
-------------  
| id | name |  
-------------  
|  1 | USD  |  
|  2 | EUR  |   
-------------
ITEMS:  
----------------------------------------  
| id | name      | price | currency_id | 
----------------------------------------  
|  1 | product a |   100 |           1 |
|  2 | product b |    20 |           2 |
|  3 | product c |    60 |           2 |
|  4 | product d |  NULL |        NULL |
----------------------------------------


允许ITEMS.priceITEMS.currency_id允许NULL,但ITEMS.currency_id时必须设置ITEMS.price != NULL

这些表之间的关系如何?

1 个答案:

答案 0 :(得分:0)

这就是你应该如何在RoR中实现一对一的关系:

class Item < ActiveRecord::Base
  has_one :currency
end

根据您的DBMS,您可以添加检查约束,以便pricecurrency_id必须为空或两者都必须为值。

在我看来,你可以把它放在另一张桌子里

PRICES
---------------------------
| id | value | currency_id |  
---------------------------
|  1 | 100   |           1 | 
|  2 | 200   |           2 | 
---------------------------