【发布时间】:2010-07-27 22:50:50
【问题描述】:
这应该很容易。我不确定如何为这个问题命名。我有一组可以添加到我的 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 或整数,具体取决于它是否存在?
【问题讨论】:
-
为什么你的 parent_id 会是一个字符串?这里没有加起来。
-
因为它来自 params 哈希。 params 中的所有内容都作为字符串传递不是吗?
标签: ruby-on-rails custom-attributes