我有来自同一个数据库的两个表,当更新一个字段时,需要在第二个表中使用该信息更新相应的字段。如何使用Rails框架将这些字段(和表)连接在一起?
答案 0 :(得分:1)
如果你想在Rails堆栈本身上处理这个问题,我目前处理类似情况的一种方法是使用ActiveRecord Callback方法。有关的文档可用here。在最初修改属性的模型中,您可以使用after_validation_on_create回调:
after_validation_on_create :toggle_other_table_asset
def toggle_other_table_asset
if self.in_use
sibling.in_use = 1
else
sibling.in_use = 0
end
sibling.save
end
您还可以考虑使用ActiveRecord事务来确保数据的完整性,找到更多信息here。
我能给你的最好建议是考虑确保在应用层完成所有工作的潜在缺点。以这种方式耦合数据也存在缺陷。也许您应该考虑重构模型以避免重复数据。
可能出现问题的示例包括在周末运行以清理数据库的维护脚本,或者与底层数据库的命令行界面交互并手动修改罪魁祸首属性......没有数据库TRIGGER编程,你'重新冒着损害数据完整性的风险。
答案 1 :(得分:0)
您可以使用rails as explained here连接到多个数据库。但是对我来说,如果你只是想复制数据,那么在数据库级别上建立一些逻辑可能会更简单,并且不会让它离开它。