只有当用户选择此页面时,才需要将页面附加到布局。
我的意思是当用户编辑页面时,有一个下拉列表可以从中选择布局。
如果选择了某些布局,效果会很好。
但是,如果用户选择<option value='0'> None
选项,
DataMapper抛出一个错误,指出layout_id
应该大于零。
我认为不应该发生,因为我在required: false
关联设置belongs_to :layout
。
以下是我的模特:
class Layout
include DataMapper::Resource
property :id, Serial
property :name, String
end
class Page
include DataMapper::Resource
property :id, Serial
property :name, String
belongs_to :layout, required: false
end
答案 0 :(得分:1)
你对“引擎盖下”的验证是正确的。
它由belong_to
关联自动添加。
你可以通过重新定义layout_id
属性来摆脱它。
在Page
模型中,只需添加:
property :layout_id, Integer, index: true
这将保留关联,但会重新定义layout_id
属性
所以它不会自动添加验证。
但请注意,这仅适用于Page.auto_migrate!
或者您可以手动从页面表中删除外键。
另外,请确保layout_id
是索引,否则会出现性能问题。