处理视图支持的模型,该模型实际上不属于它所显示的表单

时间:2009-11-09 17:08:20

标签: ruby-on-rails activerecord

有点难以解释,但我要尝试:我有一个名为Message的模型,它表示要发送电子邮件的请求,一个名为Segment的模型,它是从第三方应用程序中提取的MySQL视图(并且是只读的),最后是用户模型。细分和消息都属于用户。

问题是我需要在表单上显示一个段列表作为多选列表框来创建一个新消息,并将该数据存储到我们的营销部门生成电子邮件后应显示用户想要的段他们的消息被发送到。还需要一个“默认”值来表示用户的整个列表(例如,“我的所有联系人”都带有默认值)。但是,我无法写入视图(我也不想这样做,因为它是从第三方应用程序中提取的)。

现在我对如何构建它感到困惑。我可以创建一个名为MessageSegment的新模型来连接消息和段,但是这会留下如何处理默认值的问题,因为它无法添加到基本Segment模型中,但必须保持可选择的选项。

1 个答案:

答案 0 :(得分:0)

我认为最简单的方法是为消息和片段创建连接表(就像你建议的那样)并在消息模型中添加一个列“发送给所有人”或类似的东西。

但是如果段来自不同的应用程序,那么它可以更改此表,然后您的所有消息连接都可能被破坏。此外,如果细分将发生变化,那么“发送给所有人”具有不同的含义。因此,如果您确定这个提供分段表的应用程序不会破坏分段 - 消息连接,那么如果用户选择“发送给所有”,那么您可以与所有分段建立关联而不使用其他列。

但是如果segment表可以改变那么我将从segments表中复制所有数据并将其与消息相关联。我知道这是多余的,但会更安全。

希望它有所帮助。