Ruby 由于引擎盖下验证,DataMapper不会保存条目
我需要网页被附加到布局只有当用户选择这个 我的意思是,当用户编辑页面时,有一个下拉列表可供选择布局 如果选择了某些布局,则效果良好 但是,如果用户选择Ruby 由于引擎盖下验证,DataMapper不会保存条目,ruby,datamapper,Ruby,Datamapper,我需要网页被附加到布局只有当用户选择这个 我的意思是,当用户编辑页面时,有一个下拉列表可供选择布局 如果选择了某些布局,则效果良好 但是,如果用户选择None选项, DataMapper抛出一个错误,指出layout\u id应该大于零 我认为这种不应该发生,因为我在上设置了必需:false属于:layout关联 以下是我的模型: class Layout include DataMapper::Resource property :id, Serial property :na
None
选项,
DataMapper抛出一个错误,指出layout\u id
应该大于零
我认为这种不应该发生,因为我在上设置了必需:false
属于: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
关于“引擎盖下”验证,你说得对
它由归属
关联自动添加
您可以通过重新定义layout\u id
属性来摆脱它
在页面
模型中,只需添加:
property :layout_id, Integer, index: true
这将保持关联,但将重新定义layout\u id
属性所以它不会自动添加验证 但是请注意,只有在
Page.auto\u迁移之后,此操作才会起作用代码>
或者,您可以手动从pages表中删除外键
另外,请确保layout\u id
是一个索引,否则会出现性能问题。关于“引擎盖下”验证,您是正确的
它由归属
关联自动添加
您可以通过重新定义layout\u id
属性来摆脱它
在页面
模型中,只需添加:
property :layout_id, Integer, index: true
这将保持关联,但将重新定义layout\u id
属性
所以它不会自动添加验证
但是请注意,只有在Page.auto\u迁移之后,此操作才会起作用代码>
或者,您可以手动从pages表中删除外键
另外,请确保layout\u id
是一个索引,否则会出现性能问题。提交表单时,控制器是什么样子的?不确定您的意思。控制器与模型有什么关系?哦,你是说接收数据并将其发送到DataMapper的操作?这是一个简单的方法,比如:row=DataMapper.first\u或\u create(id:id).update!(params)
提交表单时,控制器是什么样子的?不确定您的意思。控制器与模型有什么关系?哦,你是说接收数据并将其发送到DataMapper的操作?这是一个简单的方法,比如:row=DataMapper.first\u或\u create(id:id).update!(params)
btw,我的工作演示在哪里?我看到你的大多数答案都附有一个现场演示:)顺便说一句,我的工作演示在哪里?我看到你的大部分答案都附有一个现场演示:)