【发布时间】:2014-07-14 08:51:59
【问题描述】:
我正在 Rails 4.0.4 中创建数据库迁移,我想捕获以下关系:
一位客户有许多信用卡。一位客户只有一张默认信用卡。
我认为它应该是这样的。
class Customer < ActiveRecord::Base
has_many :cards
has_one :card # i.e. has one default card
end
class Card < ActiveRecord::Base
belongs_to :customer
end
这是正确的吗?如果是这样,Rails 怎么知道Card 类中的belongs_to 指的是哪个关系?如果它不正确(我猜是这样),请帮我修复它。
【问题讨论】:
-
在你的情况下,我将使用
has_many :cards并在cards表中制作is_default之类的is_default。默认卡将具有is_default列true。 -
或者你可以这样做
has_one :default_card, :class_name => "Card" -
我也建议与@Pavan 相同的答案,为简单起见,您可以为默认卡定义一个范围,这样您只需要 1 个关系。
标签: ruby-on-rails ruby-on-rails-4 rails-migrations