自 6 个月以来,我一直在使用 rails 3 和 MySQL,但仍然不知道如何实现“字符串”列作为主键?我猜它不允许非整数字段成为 MySQL 中表的主键。例如。如果我有一个客户表,其中客户代码:字符串作为主键和产品表,它通过客户代码字段引用客户表,即产品表中的客户代码是外键。我如何在 Rails 3 中实现这种关系?谁能建议我一些合适的方法来实现这种关系?
问问题
137 次
3 回答
0
class Product < ActiveRecord::Base
belongs_to :customer, :foreign_key => :customer_code, :primary_key => :customer_code
end
于 2011-08-10T11:46:43.077 回答
0
我猜你有两个模型:Costumer
和Products
. 那么这个解决方案怎么样?
class Costumer < AR::Base
set_primary_key 'code'
has_many :products, :foreign_key => :costumer_code
validates :code, :presence => true
end
class Product < AR::Base
belongs_to :costumer, :foreign_key => :costumer_code
end
问题是您必须确保在创建时正确设置客户代码,因为它不像默认主键那样自动递增id
。before_create
回调会帮助你。
于 2011-08-10T11:34:31.330 回答
0
我会保持简单并遵循标准的 Rails 约定 - 使用自动 id 字段作为您的密钥。
如果您想在 products 表中包含 customer_code 以避免需要查找用户对象来获取代码,那么在保存产品时也要存储它。
于 2011-08-10T11:29:39.747 回答