我的任务是为我目前的工作开发一个新的零售电子商务店面,我正在考虑用RoR来解决它A)用我有限的Rails知识建立一个"真正的"项目,以及B)给予管理层快速周转和反馈(他们希望尽快完成这项工作,他们的最后期限是相当不切实际的 - 我说的是几个星期从零开始到工作模式,所以他们可以开始用SEO/SEM推销它,而且我没骗你,"视频博客"因为我的老板听说这是未来的事情".
我们确实有一个数据库结构,但它绝对可怕并且没有押韵也没有理由被抛在一起,所以我将在很大程度上忽略它并从头开始创建一个新的数据库; 但是,我有需要加载到应用程序中的现有数据(就像我说的,它是一个电子商务应用程序,我们有产品数据).我需要将这些数据按到一个可用的格式,因为我们的供应商向我们提供了神秘的,缩写的列名称,并且它高度非规范化,特别是在类别中(我之前发布了一个关于它的问题 - 基本上类别表有六个字段,每个类别/子类别一个,如果该类别不适用,其中一些是空白的).
有两个主要问题让我第二个想法:
正如我所说,数据需要放入"适当的"数据库模式; 我不能只是按原样加载它.我对它的良好数据模型有一些想法,但我的分析还没有完成.最终会有大量的连接表将各种东西链接在一起(例如products_categories,products_attributes,products_prices)等,这些表将链接产品而不是通过ID而是通过它们的SKU(见下文).
一切都已经有了为它生成的ID,但我添加的任何新内容都需要自动生成一个; 我怀疑这对任何成熟的RDBMS都有问题,但我知道Rails喜欢自己生成ID.此外,几乎所有与产品相关的表都由SKU链接(并且在供应商提供的数据中实际上是由前缀和库存号组成的复合键,它们组合构成完整的SKU),而不是ID和I我不确定这是否会成为性能问题(当然,我总是可以在这些列上手动创建索引来加快速度).但这确实意味着我需要脱离Rails约定.
简而言之,我认为就产品上市时间和易于开发而言,Rails可能是一个不错的选择,但是必须使用现有的数据内容可能会变成一种痛苦,因为应用程序需要围绕它开发而不是"传统的"Rails应用程序,这个因素让我对使用Rails产生了重大疑虑.还有一些其他问题(必须设置一个Linux服务器,而且我所居住的区域只有很少的Rails开发人员这样的事实,所以如果我离开公司,我基本上会把他们作为更新/修改的人质) .我真的不确定最好的路径.
我必须用Ruby解析制表符分隔的文本文件,以从中提取一些数据.由于某些未知的原因,一些列没有使用,只是基本上是间隔物; 我想忽略这些列,因为我不需要它们的输出(但是我不能忽略所有空列,因为一些合法的列具有空值).我已经知道这些列的索引(例如第6,14,24和38列).
虽然我可以在解析文件时添加一个条件并说解析它,除非它是其中一个列,这似乎不是"Rubyish" - 是否有更好,更优雅的方法来处理它?RegExps,也许?我想做一些类似[6, 14, 24, 38].each { |x| columns.delete_at(x) }删除未使用的列的事情,但这将迫使我重新确定我实际需要的列的索引.我真正想要做的就是遍历整个事情,检查当前列的索引,如果它是"坏"列之一,则忽略它.然而,拥有像这样的代码似乎非常难看unless x == 6 || x == 14 || x == 24 || x == 38
我想知道是否可以配置从ActionMailer派生的Rails电子邮件,以根据环境发送给不同的收件人.例如,对于开发我希望它发送邮件到我的个人电子邮件,所以我不会用"测试"电子邮件堵塞我们公司的电子邮件帐户; 但是我希望它能使用真实的地址.
我怎样才能做到这一点?
编辑看起来我想出来了 - 我必须在allSearchlogic 调用之后调用paginate .
我正在尝试使用这两种工具来使用户能够搜索联系人并返回分页列表(如果他们没有输入任何搜索条件,则返回整个分页列表).但是我不确定将它们链接在一起的正确方法,而我正在尝试的是给我错误.
这是我的控制器:
class ContactsController < ApplicationController
def index
@search = Contact.search(params[:search]).paginate(:page => params[:page])
@contacts, @contacts_count = @search.all, @search.count
end
end
Run Code Online (Sandbox Code Playgroud)
这给了我错误Undefined method 'all' for WillPaginate.删除全部会给我一个错误,因为视图正在查找具有"联系"一词20次的路径(例如contact_contact_contact..._path),可能是因为默认的"每页"为20.
我究竟做错了什么?我想在这个页面上搜索,订购和分页.
我似乎正在大脑冻结.我希望在循环几个对象期间捕获可能的Ruby异常,以便将其计为稍后显示的失败,但我不希望执行停止; 我希望它跳过坏记录并继续.我该怎么做呢?我不认为我可以使用,retry因为那会再次尝试相同的记录,对吧?
我正在使用一个相当毛茸茸的Stored Proc来返回XML(XML用样式表转换并打印到页面;本质上是XML格式的GridView).我有聚集多个行(具有相同的ID,当然)的要求成单个行仅当一特定列的值不是两个特定值(在这种情况下,列不聚集的)中的一个.
实际上我需要做以下(在伪代码中):
select quoteID, customerName, shippingCharges, description, /*other columns*/
from quotes q
inner join customers c on q.customerID = c.customerID
where shipDate between @fromDate and @toDate
for xml explicit
if description != "Insurance" and description != "Pickup":
/*aggregate the rows for that quoteID into one single row
adding together charges and the like as needed*/
else:
/*nothing - okay to have multiple rows*/
Run Code Online (Sandbox Code Playgroud)
我该如何处理这种逻辑呢?我的第一个猜测是将所有值放入临时表(或CTE),然后以某种方式检查所有数据以查看是否需要提取和组合行,但我正在绘制一个空白,以确定如何实际完成,这通常是一个指标,这不是正确的做法...
相反,这会在XSL转换文件中做得更好(也许更容易吗?)吗?我的选择仅限于三种选择:
编辑
一个我所面临的问题是,记录通常具有相同的ID字段,因此总计是走出来不正确,因为我总结整个记录(其计算总的我想外地和外地,我不想要).
例如,记录可能是这样的:
1234 Insurance …Run Code Online (Sandbox Code Playgroud) 我有一个存储过程需要在返回表的函数上进行内部连接.试着这样称呼它:
INNER JOIN [dbo].[udf_GetBillingInfo(@QuoteID)] billInfo ON quotes.QuoteID = billInfo.QuoteID
Run Code Online (Sandbox Code Playgroud)
给出错误 invalid object name dbo.udf_GetBillingInfo(@QuoteID)
根据我的要求,我认为我不能将函数放入视图中,因为它有一点点逻辑.我如何加入结果?我是否必须将函数结果分配给变量或那种性质的东西?
希望有人可以提供这方面的答案,尽管它不是100%编程相关的.突然,当我尝试加载以.asp结尾的任何文件时,我在Server 2003上安装的IIS6会给我一个"404 Not Found"错误.
如果我打开目录浏览,我可以看到那里的文件,但是立即点击它会给我一个404.常规HTML页面加载得很好,它只是它找不到的ASP文件,尽管它们位于旁边的目录中HTML文件.
我可能忘记了一些愚蠢的事情 - 有人会提醒我需要做些什么才能让它正确加载吗?
我想我在这里遗漏了一些东西.我有一个这样的目录:
myapp
|-lib
|-package1
|-dostuff.rb
|-package2
|-dostuff.rb
从一个irb控制台我想测试库之前,我把它添加到我的实际项目(一个Rails应用程序).但是,输入以下内容:
require 'lib/package1/dostuff'
Run Code Online (Sandbox Code Playgroud)
返回错误,说它无法找到要加载的文件.我将lib目录添加到加载路径但我无法加载该文件.
我忘记了什么?这两个文件名不必相同,但它们是如何开始的(它们是从我需要使用soap4r调用的一些Web服务自动生成的;每个包代表一个不同的Web服务API组)
ruby ×3
actionmailer ×1
asp-classic ×1
brownfield ×1
iis-6 ×1
require ×1
searchlogic ×1
sql ×1
t-sql ×1
windows ×1
xslt ×1