From php & SQL to Rails & ActiveRecord


From php & SQL to Rails & ActiveRecord

我有一些遗留的DB与许多表(约100)旧系统是使用php运行的,有这么多的操作与NLP中使用的数据。我有点好奇如何用Rails完成这些事情。我读到ActiveRecord不适用于遗留系统!但我发现有些人使用它没有任何问题,所以为什么有些气候?还要考虑下面的php代码,其中有许多If &SQL语句,有些人认为这种情况下被认为是典型的数据/数据库任务而不是OO之一,所以最好远离AcriveRecord或任何其他ORM。这是真的吗?如果没有,它可以很容易地通过Rails的ActiveRecord完成吗?

假设所有变量都是从web表单提交的。我们有一些文本要注释,我们必须看看是否有任何其他用户同意这个用户提交的表单。然后我们将更新协议表。

if ($submitted_id !=""){ 
$sql = "SELECT * FROM annotation WHERE relation_id = $relation_id";
$result = open_query($sql);
while ($row = mysql_fetch_assoc($result)) {
    $user_id = $row["user_id"];
    $line = "";
    $sql = "SELECT * FROM agree WHERE user_id = $user_id AND user_id_agree = $submitted_id LIMIT 1";
    $result = open_query($sql);
    $line = mysql_fetch_array($result, MYSQL_ASSOC);
    if ( $user_id != $submitted_id ) { 
        if ( $line == "" ) { 
            mysql_query ("INSERT INTO agree VALUES ('$user_id' , '$submitted_id', '1', CURRENT_TIMESTAMP)");
        } else { 
        $total = $line["total"];
        $new_total = $total+1;
        mysql_query ("UPDATE agree SET total = $new_total WHERE user_id = $user_id AND user_id_agree = $submitted_id LIMIT 1");
        }
    }
}
}

在ActiveRecord中使用遗留数据库模式会使您失去它的一些优点。例如,Rails对许多事情采用"约定优于配置"的方法,ActiveRecord继承了这一点。例如,如果您有一个名为Product的模型,Rails假定您的表将被称为"products"。由于这个原因,您不必配置表名。外键、URL约定等也是如此。您越愿意让您的应用程序按照Rails的工作方式工作,您就会越轻松。如果您的目标不是"构建一个做X的应用程序",而是"将这个应用程序转换为Ruby和ActiveRecord",那么生成的代码将不那么清晰或习惯。

如果您尝试以您正在使用的工具的常规方式编写应用程序,那么您可能会得到更清晰,更易于维护的代码。

对于您提供的代码,我不完全清楚它应该做什么(因为我没有上下文来知道"submitted_it","user_id_agree","annotation"等在您的应用程序中意味着什么)。