作为新的轨道,我有点惊讶的是,轨道迁移/的ActiveRecord不会创建数据库级的外键has_many
, has_one
等关系。 它是从话题搜索清楚,这是轨道的方式。
我在书里偶然发现一个例子敏捷Web开发使用Rails 4 ,它使用110页下面的例子。
class Product < ActiveRecord::Base
has_many :line_items
before_destroy :ensure_not_referenced_by_any_line_item
...
private
# ensure that there are no line items referencing this product
def ensure_not_referenced_by_any_line_item
if line_items.empty?
return true
else
errors.add(:base, 'Line Items present')
return false
end
end
end
这个例子让我畏缩,因为ensure_not_referenced_by_any_line_item
正是这种事情程序员会忘记补充。 而且,在我看来,它需要更多的代码意味着更多的错误,等等。
我发现这个线程是关于同一主题的超过五岁。 我也觉察到的外国人宝石 。
我的问题是有关事务的轨道的当前状态。 是否支持数据库级别的外键了吗? 有没有像外国人宝石别的选择吗? 我感兴趣的SQLITE3和MySQL后端。