这应该是一件容易的事。我不确定如何为这个问题命名。我有一组可以添加到我的 CMS(页面、链接、表单...)的模块,它们都通过多态关联与一个表相关联,该表管理诸如祖先之类的常见事物以及它们是否已启用等。 . 例如,因为我正在制作一个“页面”,所以我会自动处理其他表记录的创建。我需要传递给它的只是parent_id。为此,我通过页面模型创建了一个代理:
def parent_id=(parent_id)
@parent_id = parent_id.blank? ? nil : parent_id.to_i
component_instance.parent_id = @parent_id
end
def parent_id
@parent_id ||= component_instance.parent_id
end
component_instance 是多态关联。
您可以看到,当在页面上设置 parent_id 时,我正在做一些魔术检查以查看它是否为空白,如果是,请将 @parent_id 值设置为 nil,否则我将其转换为整数,然后将其分配给component_instance 将在整个页面/component_instance 组合保存到数据库时根据需要应用它。
我不得不这样做,blank? nil : parent_id.to_i
因为表单选择器助手需要一个整数并且不能使用 id 的字符串值。
问题是,我这样做是否正确,或者是否有更好的方法将字符串 id 转换为 nil 或整数,具体取决于它是否存在?