我从Rails查找查询中获取结果集.我想迭代该结果集并依赖于某些条件从该结果集中删除记录,然后再将其传递以进行进一步处理.附加条件是数据库中保存的数据的外部标准,因此我不能将它们包含在原始的"查找"查询中.
注意我不想从数据库中删除任何记录只是从结果集中删除它们.
请有人给我代码来做到这一点.
我有一个代理模型,它从底层数据库表中获取其属性.但是对于一个特定的控制器操作,我想在将代理记录传递给视图之前向代理记录添加一些"临时"属性.
这可能吗?
我有一个基于内存的会话表,其中包含以下内容:
id
sessnhash
userid
created_at
updated_at
Run Code Online (Sandbox Code Playgroud)
这个想法是当用户首次登录随机时sessnhash创建并传回,以便所有进一步的操作必须发送该会话用于服务器请求.这些经过登录?应用程序控制器上的方法,它只检查该会话中是否存在表中的行.
我现在想要扩展此功能以保留上次为该用户发生任何活动的选项卡,我认为这样做的一种方法是在找到sessionhash后立即执行保存,希望这会更新' updated_at'属性.
然而,Rails太聪明了,并没有更新任何东西,因为实际上没有任何更新.
有没有办法强制Rails更新updated_at属性而不必对任何其他属性进行任何数据更改?
我有以下一点代码:
uri = URI.parse("https://rs.xxx-travel.com/wbsapi/RequestListenerServlet")
https = Net::HTTP.new(uri.host,uri.port)
https.use_ssl = true
req = Net::HTTP::Post.new(uri.path)
req.body = searchxml
req["Accept-Encoding"] ='gzip'
res = https.request(req)
Run Code Online (Sandbox Code Playgroud)
这通常工作正常,但另一方的服务器抱怨我的XML中的某些东西需要xml消息和正在发送的标头的技术人员.
我有xml消息,但我无法弄清楚如何获得上面发送的Headers.
我有一个仅供公司员工使用的小应用程序。我不直接使用来自 Rails 的任何“cookies/session”信息。鉴于当前要求接受 cookie 等。我想完全禁用 cookie,以便 Rails 不会向浏览器发送任何带有我生成的响应的 cookie。
我在javascript中将以下XML放在名为RoomPriceInfo的var中:
<?xml version="1.0" encoding="UTF-8"?>
<BkgItemHotelRoomPrices CurrCode="EUR">
<RoomType Code="DB" Count="1" Desc="Double" Age="0">
<PriceInfo EndDate="2011-12-17" AgentMarkup="0.0" MarkupPerc="0.1075" FitRdg="0.25" MarkupPrice="48.73" AgentPrice="48.75" StartDate="2011-12-11" Nights="7" FitRdgPrice="48.75" CurrDec="2" CurrDecPrice="48.75" SuppPrice="44.0"/>
</RoomType>
</BkgItemHotelRoomPrices>
Run Code Online (Sandbox Code Playgroud)
和以下代码:
DBRoomPrice = RoomPriceInfo.doXPath("//RoomType[@Code='DB']");
alert(DBRoomPrice[0].children.length);
Run Code Online (Sandbox Code Playgroud)
在Ubuntu上的FF7和WinXP上的FF8下,我收到1的警报是正确的.但是在WinXP上的IE8和Windows 7上的IE9下没有任何反应.它只是默默地死去.
任何人都可以对此有所了解吗?如果我getElementById在DOM对象上做了一个然后请求孩子,那么IE8和IE9表现正常.
javascript xml internet-explorer children internet-explorer-9
是否有一种简单的"命令行/控制台"方式来检查Rails应用程序是否正确连接到MySQL?
不幸的是,我无法得到一个Rails控制台.它抱怨:
/home/nexargi/www/gi/vendor/ruby/1.9.1/gems/activerecord-3.2.1/lib
/active_record/dynamic_matchers.rb:50:in `method_missing': undefined
local variable or method `abddadhocbkgid' for #<Class:0x000000036427f8> (NameError)
from /home/nexargi/www/gi/app/models/adhoc_bkg_diners_diet.rb:5:in
`<class:AdhocBkgDinersDiet>'.
Run Code Online (Sandbox Code Playgroud)
该"abddadhocbkid"是第一台的第一属性,因此,我认为它不负责管理连接到MySQL数据库.我需要找到一种方法来检查Rails是否可以连接到mysql数据库而无需登录rails控制台.
这是我的型号代码:
class AdhocBkgDinersDiet < ActiveRecord::Base
validates_presence_of :abddadhocbkgid, :abddmealdietid, :abddadultnos, :abddchildnos
validates_numericality_of :abddadultnos, :abddchildnos, greater_than_or_equal_to: 0
belongs_to :adhoc_bkg, foreign_key:abddadhocbkgid
belongs_to :meal_diet, foreign_key: :abddmealdietid
end
Run Code Online (Sandbox Code Playgroud) 我有一个Apache/Passenger组合服务Rails 3.x和相同的组合服务Rails 2.x通过反向代理服务于Passenger Standalone.我这样做的原因是因为Rails 2.x使用旧版本的Ruby而不是Apache/Passenger使用的Ruby.
但是,Rails 2.x应用程序中有一些PHP,Passenger Standalone无法支持.(由Hongli Lai在乘客讨论小组确认).Hongli建议从反向代理中排除'php'位.
可以这样做,如果是这样的话怎么办?
编辑以显示如何设置反向代理:
<VirtualHost *:80>
ServerName gtt
DocumentRoot /home/purvez/www/gtt/public
RailsEnv development
PassengerEnabled off
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
另外,如何设置普通网站:
<VirtualHost *:80>
ServerName testapp
DocumentRoot /home/purvez/www/testapp/public
RailsEnv development
</VirtualHost>
Run Code Online (Sandbox Code Playgroud) 我有以下关系。
AdhocBkg
has_many :invoice_trans
InvoiceTran
belongs_to :invoice_hdr
belongs_to :meal
InvoiceHdr
belongs_to :supplier
belongs_to :client
Run Code Online (Sandbox Code Playgroud)
我需要拉出所有具有“已开票”状态的 AdhocBkg,然后通过每个 AdhocBkg 的最后一张发票交易按以下方式对它们进行排序:供应商名称、客户名称、发票编号、发票转运日期和膳食排序顺序。
我目前的代码是:
#AdhocBkg Billed Status ID
abbilledstatusid = AdhocBkgStatus.find_by_abstatdesc('Billed').id
@adhocbkgs = AdhocBkg.find_all_by_abstatusid(abbilledstatusid)
@adhocbkgs.sort! {|x,y| x.invoice_trans.last.invoice_hdr.supplier.suppname + x.invoice_trans.last.invoice_hdr.client.clientname + x.invoice_trans.last.invoice_hdr.invno.to_s + x.invoice_trans.last.invtrndate.strftime('%Y%m%d') + x.invoice_trans.last.meal.mealsortseq.to_s <=> y.invoice_trans.last.invoice_hdr.supplier.suppname + y.invoice_trans.last.invoice_hdr.client.clientname + y.invoice_trans.last.invoice_hdr.invno.to_s + y.invoice_trans.last.invtrndate.strftime('%Y%m%d') + y.invoice_trans.last.meal.mealsortseq.to_s }
Run Code Online (Sandbox Code Playgroud)
上述工作但很慢,主要是因为对数据库的多次读取,我怀疑实际排序。我想知道如何重构代码以使用:include或:joins与:order子句一起使用,这可能有助于加快速度。但是,我无法弄清楚 Rails Active record 'find' 语句对于上述内容应该是什么。
我在 Ubuntu 11.04 上使用 Rails 3.2.1、Ruby 1.9.3p0 和 MySQL 5.1。
我正在尝试将给定年份的日期数转换回其日期,即方法的倒数yday.例如,鉴于2012年的第200天,我希望获得2012-07-18的日期.
activerecord ×2
ruby ×2
apache ×1
children ×1
cookies ×1
date ×1
header ×1
http ×1
include ×1
javascript ×1
join ×1
mysql ×1
net-library ×1
php ×1
xml ×1