Tag: 数据库

如何在不先删除数据库的情况下将带有rails的数据库迁移到第一个修订版?

我为我的Rails安装设置了一个数据库,并设置了一些迁移。 我希望能够将我的数据库重置为没有表/约束/等等,但是在不知道迁移次数或第一次迁移的时间戳的情况下找不到合理的方法。 我看到以下是我的选择: rake db:migrate:reset rake db:migrate:down VERSION=20090701154839其中20090701154839是与第一次迁移相关的时间戳 rake db:rollback STEP=15 ,其中有15次迁移 db:migrate:reset的问题在于它首先丢弃数据库(它执行db:drop , db:create ,然后db:migrate )。 db:migrate:down是我不想编码开头的VERSION。 db:rollback的问题在于我不知道它回到开头的步骤数。 我有什么选择?

在Rails应用程序中安全地提供数据库密码

如您所知,您必须在config / database.yml文件中为数据库提供正确的数据库名称,用户名和密码,否则您的Rails应用程序将拒绝工作。 在默认设置中,您的密码在config / database.yml文件中以纯文本格式显示。 如果您的应用程序位于免费的GitHub存储库中,那么您的密码就是公共信息。 对于严肃的应用程序,这不是一个可行的选择。 (如果您不使用此密码进行任何其他操作,则可以进行辅导练习。) 到目前为止,我有一个对我有用的解决方案,但我想知道是否有更好的东西。 您可以在https://github.com/jhsu802701/bsf上查看我部署的示例。 我所做的是设置config / database.yml文件,以编程方式提供开发环境的用户名和密码。 对于开发环境,我将命令添加到config / database.yml脚本以获取开发环境用户名(这是我使用的Debian Linux设置的常规用户名)和空白密码。 (我给我的用户名Postgres超级用户权限。)对于生产环境,我在部署脚本中添加一个命令,该命令从我帐户上其他位置的文件中获取用户名和密码,并将此信息写入config / database.yml文件。 有更好的解决方案吗? 是否有一个Rubygem涵盖了这个? 如果没有,我正在考虑创建一个。

如何在Rails应用程序中避免竞争条件?

我有一个非常简单的Rails应用程序,允许用户在一组课程中注册他们的出勤。 ActiveRecord模型如下: class Course < ActiveRecord::Base has_many :scheduled_runs … end class ScheduledRun :attendances … end class Attendance true … end class User :attendances, :source => :scheduled_run end ScheduledRun实例具有有限数量的可用位置,一旦达到限制,就不能再接受更多的考勤。 def full? attendances_count == capacity end attendances_count是一个计数器缓存列,包含为特定ScheduledRun记录创建的出勤关联数。 我的问题是,当一个或多个人同时尝试在课程中注册最后一个可用位置时,我不完全知道确保不会发生竞争条件的正确方法。 我的考勤控制器如下所示: class AttendancesController :create def new @user = User.new end def create unless @user.valid? render :action => ‘new’ end […]

在rails上的ruby中连接到多个数据库

我有一个ruby on rails应用程序工作正常并连接到数据库。 现在我想从同一个应用程序连接到不同的数据库。 数据模型可以完全相同。 事实上,如果我连接到不同的数据库,应用程序工作正常。 但是,我想连接到两个不同的数据库。 铁轨上的ruby可以吗?

如何在rails中混淆记录的ID?

我试图弄清楚如何在rails中混淆我的记录的ID。 例如:典型的路径可能看起来像http:// domain / records / 1 ,因此人们很容易推断出网站在创建新记录时会获得多少流量。 我使用的一个解决方案是使用salt来散列id,但由于我不确定该函数是否是双射的,我最终将其存储在数据库的另一列中并仔细检查唯一性。 我想到的另一个选择是生成随机哈希并将其存储为另一列。 如果它不是唯一的……只需生成另一个。 这样做的最佳方法是什么?

在1控制器方法(rails)中保存db中的2项

我有一个问题,一次在db中保存2个项目(我正在使用rails 3.1)。 我有模型消息 class Message < ActiveRecord::Base belongs_to :user validates_presence_of :content end 消息模型有params:user_id(接收方),user_from(发送方)和内容(文本) 和型号用户是 class User < ActiveRecord::Base has_many :posts has_many :messages end 在MessagesController我有方法 def create @message =Message.new(params[:message]) User.find(@message.user_id).messages.build(params[:message]) User.find(@message.user_from).messages.build(params[:message]) end 问题是User.find(@ message.user_id)只有这条消息,user_from没有。 我甚至User.find(2).messages.build(params[:message])过这个User.find(2).messages.build(params[:message])而不是User.find(@message.user_from).messages.build(params[:message])和id为2的用户也有这个消息,只有user_id的用户有。 我做错了什么? 提前致谢

Rails:将翻译存储在数据库中

我正在寻找一个插件/ gem解决方案来扩展本机rails i18n以便将我的翻译存储到我的数据库中。 也许我使用了错误的搜索词,但我找到的只是信息,改变后端实际上是可能的,这个博客条目描述了如何编写我自己的后端。 很难想象,所有那些rails应用程序都将其翻译存储在yml文件中,或者每个开发人员编写自己的后端! 你知道为此工作的解决方案吗? 在yml中存储多行文本真的让我失望! ;) 谢谢和问候, 乔

ActiveRecord包含

我使用以下模型制作了锻炼应用程序: 用户 常规 升降机 演习 相关信息 例程属于用户 例行程序有许多升降机(这是运动和常规之间的联接) 电梯属于运动 信息(套)属于电梯 我正在深入研究ActiveRecord查询,并特别包括处理我遇到的n + 1问题。 当我展示整个例程时,显示: 例程名称 用户名 每个电梯的练习名称 每个电梯的设置 如果我想减少查询,我可以简单地加载如下所示的所有内容: a = Routine.includes(:user,:lift,:exercise,:infos)并循环遍历所有这些以找到我想要的东西? 或者我必须打破它更多说: a = Routine.includes(:user,:lift) b = Lift.includes(:exercise,:infos) 为了缩小我的查询量。 如果这个问题不够明确,请告诉我。

用户数据不会保存到数据库中

我在rails代码上写ruby。 我正在使用ajax请求从客户端向服务器发送数据。 但问题是它不会将数据保存到数据库中。 因为我对铁轨上的ruby完全不熟悉所以我不知道为什么它不起作用。 我也没有任何错误 这是我的代码 class ContactsController “your post is saved” else render “new” end end end 这是我的js代码 $(‘.signupbutton’).click(function(e) { e.preventDefault(); var data = $(‘#updatesBig’).serialize(); var url = ‘contacts’; console.log(data); $.ajax({ type: ‘POST’, url: url, data: data, success: function(data) { console.log(‘done’); } }); }); 这是我在控制台中的输出 Started POST “/contacts” for 127.0.0.1 at 2012-07-13 13:25:41 +0300 […]

Ruby on Rails:在一次搜索中搜索两个模型

我有一个搜索页面,用户可以使用不同的下拉菜单搜索不同的项目。 他们可以一次搜索多个字段,如果找到与所有字段匹配的项目,搜索将返回一些内容。 inheritance我的项目控制器中的搜索操作: def search @search = params[:client], params[:industry], params[:tech], params[:keywords] @project_search = Project.search(*@search).order(sort_column + ‘ ‘ + sort_direction).paginated_for_index(per_page, page) @search_performed = !@search.reject! { |c| c.blank? }.empty? @project = Project.new(params[:project]) @all_technols = Technol.all @project_technol = @project.projecttechnols.build respond_to do |format| format.html # search.html.erb format.json { render :json => @project } end end 这是我的搜索视图。 Client : “-Any-“, […]