Tag: 约束

Rails通配符路由与数据库查找和多个控制器

我有一个Rails应用程序设置,在定义了所有其他站点路由后,我有一个全能通配符供我的用户在非保留路径/关键字的选定根级别“虚荣”URL上显示其配置文件: get ‘*path’ => ‘profiles#show’ 然后,Profiles控制器检查以确保路径定义有效的Profile,否则重定向到root。 这很好用。 我现在需要做的是创建一种机制,其中catch-all 路径可以定义Profile 或 Blog,基于数据库查找适当控制器路由到的路径 。 我不想进行重定向…我想在原始通配符URL上加载配置文件或博客内容。 我有什么选择从通配符路由 – > db lookup – >正确的控制器? 换句话说,这个逻辑可能在哪里适当? 谢谢。

Rails:Oracle约束违规

我在inheritance的Rails站点上进行维护工作; 它由Oracle数据库驱动,我可以访问该站点的开发和生产安装(每个都有自己的Oracle DB)。 我在尝试在生产站点上插入数据时遇到了Oracle错误,但是在开发站点上没有: ActiveRecord::StatementInvalid (OCIError: ORA-00001: unique constraint (DATABASE_NAME.PK_REGISTRATION_OWNERSHIP) violated: INSERT INTO registration_ownerships (updated_at, company_ownership_id, created_by, updated_by, registration_id, created_at) VALUES (‘2006-05-04 16:30:47’, 3, NULL, NULL, 2920, ‘2006-05-04 16:30:47′)): /usr/local/lib/ruby/gems/1.8/gems/activerecord-oracle-adapter-1.0.0.9250/lib/active_record/connection_adapters/oracle_adapter.rb:221:in `execute’ app/controllers/vendors_controller.rb:94:in `create’ 据我所知(我使用Navicat作为Oracle客户端),开发站点的数据库架构与实际站点的数据库架构相同。 我不是Oracle专家; 任何人都可以阐明为什么我会在一次安装而不是另一次安装中得到错误? 顺便提一下,dev和production registration_ownerships表都填充了大量数据,包括country_ownership_id的重复条目(由索引PK_REGISTRATION_OWNERSHIP驱动)。 如果您需要更多信息进行故障排除,请与我们联系。 对不起,我还没有给出更多,但我不确定哪些细节会有所帮助。 更新 :我已经尝试在生产服务器上删除约束但它没有效果; 我也不想放弃索引,因为我不确定后果可能是什么,我不想让生产比现在更不稳定。 奇怪的是,我尝试手动执行抛出错误的SQL,并且Oracle接受了insert语句(尽管我必须使用字符串文字将日期包含在to_date()调用中以绕过“ORA-01861:文字不匹配”格式字符串“错误”。 这可能会发生什么?

Rails 3 – 通过路由将IP列入白名单

这是一个两部分问题。 我需要将我在开发服务器上的rails网站限制为只有几个IP地址,因此公众无法访问它。 (基本HTTP身份validation不会“完全”工作,因为auth会破坏项目中的Flash上​​传器。) 根据我用Google搜索的内容,这就是我在路线文件中提出的内容…… class WhitelistConstraint def initialize @ips = ‘127.0.0.1’ end def matches?(request) @ips.include?(request.remote_ip) end end MyProject::Application.routes.draw do constraints WhitelistConstraint.new do # all my routing stuff here end end 工作得很好。 但是,我需要修改它以便使用多个IP地址。 我尝试在@ips上使用数组,以及循环遍历每个循环,但都没有工作。 最重要的是,我的问题的第二部分…我可能只需要检查IP的一部分,如’127.0.0’。 我该怎么办?

在PostgreSQL中执行此小时的操作查询

我在RoR堆栈中,我必须编写一些实际的SQL来完成所有“打开”记录的查询,这意味着当前时间在指定的操作时间内。 在hours_of_operations表中,两个integer列opens_on和closes_on存储工作日,两个time字段opens_at和closes_at存储一天中的相应时间。 我做了一个查询,将当前日期和时间与存储的值进行比较,但我想知道是否有一种方法可以转换为某种类型的日期类型并让PostgreSQL完成其余的工作? 查询的内容是: WHERE ( ( /* Opens in Future */ (opens_on > 5 OR (opens_on = 5 AND opens_at::time > ‘2014-03-01 00:27:25.851655’)) AND ( (closes_on 5) OR ((closes_on = opens_on) AND (closes_at::time ‘2014-03-01 00:27:25.851655’)) OR ((closes_on = 5) AND (closes_at::time > ‘2014-03-01 00:27:25.851655’ AND closes_at::time < opens_at::time))) OR /* Opens in Past */ […]