在阅读了很多关于保留页面更改历史记录或如何对数据库中的记录进行版本控制(例如)的 SO 问题后,我找不到真正优雅的解决方案来完成这项工作。
现在,让我们尽可能清楚地解释我们需要什么,对于这个简单的修订系统,允许注册用户发布一些文章,其他用户提交这些文章的修订,然后是一些版主用户检查这些修订。
MySQL 数据库
数据库包含一个带有以下简化字段的文章表:
为了实现修订/历史版本,我想我们会有下表:
2 | revision_title, revision_content, revision_description, revision_check); |
与关系:
工作流程
用户创建了一个
另一个用户对此
主持人用户验证
我的问题
有没有办法记录轻量级版本?顺便问一下,是否可以在
奖励:SO 怎么样?
任何想法、链接、源代码、插件(MySQL、PHP 5 和 JS/jQuery)将不胜感激。
由于您的个性化工作流程,我没有看到针对您问题的插件的单一答案。
关于修订工作流程
这是您对它的看法,对您的使用来说似乎还不错。但我敢肯定,一些用例应该顺便发展一下。
我可以看到的第一点,您必须锁定修订,直到修订正在进行并且直到它得到版主的验证。进行中时添加
第二点,小心,我相信文章的作者可以在没有任何审核过程的情况下更新它。出于这个原因,您也必须设置
关于在db中记录一个轻量版本的修订
您可以在 php(或其他)中创建一个疯狂的函数,为每个更改创建一个数组,如下所示:
2 3 | '2'=>array('char_pos'=>'450','type'=>'insert','length'=>'16','change'=>'some text change'), ...); |
如您所见,在数据库中创建、格式化和记录这些内容可能非常糟糕且难以管理。
我认为没有办法使用 MySQL 进行版本控制。您可以使用 PROPEL 之类的 ORM 进行版本控制,但我认为结果不会是您所期望的...
在这里,更好的方法似乎是记录每次修订的整个更新文章,即使它会增加您的数据库。使用您的工作流程,您不会阅读很多 REVISION 表,因此 MySQL 不会有繁重的负载。
关于对比显示
您可以使用 Diff-Match-Patch 插件来突出显示两个内容之间的更新,此处为"差异"演示。我认为 SO 使用 Beyond compare(或类似)来突出修订之间的变化。
要了解有关 SO 技术的更多信息,您可以查看此页面。
出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]
我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在
我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs
如何使用RSpec::Core::RakeTask初始化RSpecRake任务?require'rspec/core/rake_task'RSpec::Core::RakeTask.newdo|t|#whatdoIputinhere?endInitialize函数记录在http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/RakeTask#initialize-instance_method没有很好的记录;它只是说:-(RakeTask)initialize(*args,&task_block)AnewinstanceofRake
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R