我们有一个简单的商品和订单模型。
orders(url)
items(title, orders_count)其中" URL“可以是来自web的任何URL,例如http://amzn.to/aCKiXO。我们想要做的是,如果用户输入“/item/7”作为"url“,那么它就像一个外键。所以就像这样:
class Order < ActiveRecord::Base
belongs_to :item, :foreign_key => :url, :regex => /items/n,
:counter_cache => true
end
class Item < ActiveRecord::Base
has_many :orders, :foreign_key => :url, :regex => /items/n,
:dependent => :destroy
end这个是可能的吗?我们使用的是Rails 2.3.8、Ruby 1.9.3和Postgresql 9.1
发布于 2012-08-18 16:05:15
不,不可能添加一个执行正则表达式匹配的foreign key constraint -或者除了简单的相等之外的任何东西。请参见PostgreSQL documentation on constraints。
您可以执行以下任一操作:
BEFORE INSERT OR UPDATE ... FOR EACH ROW触发器在PL/PgSQL中拆分出感兴趣的部分,并将感兴趣的部分添加到仅包含该部分的外键列中。应用程序不需要知道复制,因为数据库会在幕后处理复制。https://stackoverflow.com/questions/12016860
复制相似问题