我正在尝试访问我无法控制的SOAP服务.其中一个动作叫做ProcessMessage.我按照示例生成了一个SOAP请求,但是我收到一条错误,说该操作不存在.我将问题追溯到信封体生成的方式.
<env:Envelope ... ">
<env:Header>
<wsse:Security ... ">
<wsse:UsernameToken ...">
<wsse:Username>USER</wsse:Username>
<wsse:Nonce>658e702d5feff1777a6c741847239eb5d6d86e48</wsse:Nonce>
<wsu:Created>2010-02-18T02:05:25Z</wsu:Created>
<wsse:Password ... >password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</env:Header>
<env:Body>
<wsdl:ProcessMessage>
<payload>
......
</payload>
</wsdl:ProcessMessage>
</env:Body>
</env:Envelope>
Run Code Online (Sandbox Code Playgroud)
那个ProcessMessage标签应该是:
<ProcessMessage xmlns="http://www.starstandards.org/webservices/2005/10/transport">
Run Code Online (Sandbox Code Playgroud)
这就是样本Java应用程序生成它时的工作原理.该标记是我的Ruby应用程序生成的示例和示例Java应用程序之间的唯一区别.有没有办法摆脱"wsdl:"那个标签前面的命名空间,并添加这样的属性.除此之外,有没有办法强制动作不是通过像身体其他部分一样传递出来的?
这是我的代码:
require 'rubygems'
require 'savon'
client = Savon::Client.new "https://gmservices.pp.gm.com/ProcessMessage?wsdl"
response = client.process_message! do | soap, wsse |
wsse.username = "USER"
wsse.password = "password"
soap.namespace = "http://www.starstandards.org/webservices/2005/10/transport" #makes no difference
soap.action = "ProcessMessage" #makes no difference
soap.input = "ProcessMessage" #makes no difference
#my body …Run Code Online (Sandbox Code Playgroud) 我想知道其他人是如何实现这种情况的.我有一个内部rails应用程序(库存管理,标签打印,运输等).我正在重写系统的安全性,导致旧的方式变得难以维护(用户表,密码,角色) - 我使用了restful_authentication和角色.它大约在3年前实施.我已经使用ruby-ldap-net实现了AuthLogic来对用户进行身份验证(实际上,这与我以前使用其他框架/语言的方式相比非常容易).下一步是角色.我已经在Active Directory中定义了组 - 所以我不想在我的rails应用程序中运行单独的角色系统,我只想重用Active Directory组 - 因为系统的那部分已经被维护用于其他目的(共享驱动器) ,备份,PC访问等)
所以我想知道其他人是否有基于Active Directory或LDAP中的组在rails应用程序中实现权限/角色的经验.角色要求也非常复杂.
这是一个例子:
例如,我有属于AD中的主管组和库存部门的用户,因此我是该用户能够在invetory中运行"高级"任务 - 调整数量,运行报告,但是其他"主管"来自其他部门,不应该这样做,最高管理层 - 应该能够使用这些报告(无论他们是否属于投资的天气),而不是中层管理,除非他们在库存组中.除HR和财务部分外,系统管理员(域管理员)应具有对系统的无限制访问权限,除非他们在HR中(就像您不希望所有系统管理员(一个授权的管理员除外)看到其他人的个人信息雇员).
我看着acl9,cancan,aegis.我想知道在基于AD的系统访问的这种特定使用中是否存在使用一个与另一个的优点/缺点.如果您有良好的经验,建议其他系统.
谢谢!!!
我试图找出是否有一种简单的方法来执行以下操作,将to_i方法添加到TrueClass/FalseClass.
这是一个两难的问题:我的rails应用程序中有一个布尔字段 - 显然在mysql中存储为Tinyint.然而 - 我需要生成基于数据的XML在MySQL并将其发送给客户 - 有SOAP服务需要领域的问题有0或1,因为此字段的值.因此,在XML生成的时间,我需要我的假转换为0,我真为1(这是他们是如何存储在数据库中).由于True&False缺少to_i方法,我可以编写一些if语句,根据true/false状态生成1或0.但是,我有大约10个这些指标和创建,如果/其他每个不是很干.那你建议我做什么?
或者我可以在True/False类中添加to_i方法.但是我不知道我应该在rails应用程序中将它放在哪里?只是在这个特定的模型或其他地方?
我想知道是否有人知道Ruby的rubyzip替代品,可以处理各种格式,特别是zip/rar/7z?
我知道libarchive,但它并不完全符合我的目的(这是一个很好的宝石).(澄清,libarchive - 对我不起作用 - 因为我需要能够在Windows上运行.(是的,我知道很难成为我)) Libarchive实际上适用于Windows,但仍然不适合我的目的(7zip& rar格式支持)
现在我最终运行系统命令到操作系统,但我想要一些独立于操作系统的东西,并且能够处理这些格式 - 读写.
谢谢
我想我会疯了.
假设我有3个型号:地址,仓库,类别:
class Address < ActiveRecord::Base
belongs_to :category
belongs_to :addressable, :polymorphic => true
scope :billing_addresses , where(:categories => {:name => 'billing'}).joins(:category)
scope :shipping_addresses , where(:categories => {:name => 'shipping'}).joins(:category)
end
class Category < ActiveRecord::Base
has_many :addresses
has_many :subcategories, :class_name => "Category", :foreign_key => "category_id"
belongs_to :category, :class_name => "Category"
end
class Warehouse < ActiveRecord::Base
has_many :addresses, :as => :addressable
end
Run Code Online (Sandbox Code Playgroud)
地址是多态的,因为最终我将用它来存储客户,人员,员工等的地址.而且每个地址都可以是某种类型:计费,运输,工作,家庭等.
我想在页面上提取一些信息.
@some_warehouse = Warehouse.first
Run Code Online (Sandbox Code Playgroud)
然后在我看来:
%b= @some_warehouse.name
%b= @some_warehouse.billing_address.address_line_1
Run Code Online (Sandbox Code Playgroud)
等等.
我最终对每行信息进行查找.
我试着做的事情
Warehouse.includes(:addresses).where(:name => "Ware1")
Warehouse.joins(:addresses).where(:name => "Ware1")
Run Code Online (Sandbox Code Playgroud)
以及各种变化.无论我做什么,我都无法通过轨道预加载所有表格.我究竟做错了什么?
在生产模式下试用我的Rails 3.1应用程序(Debian 6,Ruby 1.9.2,Passenger).我尝试使用IE 6和IE 7,并且一些资产未正确加载.开发模式下一切正常.
有些css&js没有正确加载,你正在编译所有文件.特别是我遇到了下拉菜单问题(jquery superfish菜单).在生产和开发中,IE8,IE 9,Firefox,Chrome中的一切都运行良好.该问题仅出现在生产中的IE 6和7中.
尝试清除缓存(在浏览器和服务器上).重新编译资产.什么都看不到帮助.
有没有人碰到任何东西 - 像那样?
背景:
试图找出我正在构建的应用程序的最低要求。对于开发人员来说,我对 MySQL 和 PostgreSQL 相当流利,但我不是 DBA,因此我的问题。我正在构建一个移动应用程序,它将与远程 API 通信,并且需要弄清楚这个 API 的要求。在这一点上,我这样做是因为业余爱好项目和移动应用程序将免费,所以我没有很大的预算 - 需要尽可能接近我的要求。
申请要求:
远程 API 在 Rails 中完成,提供 web 和 json 接口,将数据存储在 postgresql 集群中。移动应用会发送大量短文~大约每分钟 1 次 * 20,000 次应用安装。大多数阅读将是 - 报告风格,因此更长的阅读时间,这种情况不会经常发生 - 每个用户每天可能一次或两次。所以DB大多需要针对写入进行优化。读取操作始终可以重定向到副本集群/服务器,因为此时它们不需要是实时的。延迟一天就好了。
评论中每个问题的更多详细信息:
1) 写入非常小:我将发回一些身份验证令牌(如 api 密钥)和很少的数据 - 我们少说话,感谢 1kb 的数据:时间戳和 GPS 坐标,也许最终还有其他东西,但我对此表示怀疑。我不认为有任何大数据,比如图片或类似的东西。它将类似于跑步/慢跑/骑自行车的跟踪应用程序。
2)扩大规模?唔。200,000 - 400,000 个应用程序,如果它真的在前 2 年内起飞的话。
3)数据相当关键。重点是能够在收集数据后运行准确的报告。然而,有两种选择可以缓解这个问题:
实际问题详情
所以我的问题是针对处理这种规模应用程序的人,您最初的 PostgreSQL 设置是什么——集群配置和硬件(云)方面,以及扩展的难易程度?
为了防止不相关的建议和答案:
NoSQL 替代品
我考虑过 NoSQL 替代品,如 CouchDB、MongoDB 等。Riak 实际上是赢家,考虑到单人团队很容易管理,而且我只需要 3 台数据库服务器即可拥有一个工作复制集群。但是在规划我的应用程序后,我发现 NoSQL 不适合这个应用程序,它属于 RDBMS 的 .
NoSQL 替代方案和 …
假设我有一个 Product 模型和 ProductsController。控制器具有所有标准的 CRUD 方法,产品进行各种验证等。
这是一个问题。我有几个自定义的非常复杂的动作,它们也需要以多种格式(json、html、xml、csv、pdf 等)进行响应。对此的业务逻辑原因超出了问题的范围。让我们就这样吧,这就是它必须完成的方式。我也使用 InheritedResources gem,但我认为这对问题无关紧要。
例如(这是一个模拟应用程序,它非常简化 - 我删除了各种 if else 语句、循环和本地化等):
class ProductController < InheritedResources::Base
....
def check_stock_using_legacy_identifier_and_create_a_unique_po_number_and_place_an_order
@order = Order.new
@product = Product.find(params[:legacy_alphanumeric_product_number])
if @product.stock > 5
@po = LegacyOrder.create_po
if @po
if @order.save
format.html{ render :check_stock_using_legacy_identifier_and_create_a_unique_po_number_and_place_an_order, flash: {success: "Wow! Input was good!"}}
format.json{ render status: 400, json: {status: :success, message: "Order created"}}
else
format.html{ render :check_stock_using_legacy_identifier_and_create_a_unique_po_number_and_place_an_order, flash: {error: "Can't create order, some validations failed"}}
format.json{ render status: 400, json: {status: :error, message: "Problem …Run Code Online (Sandbox Code Playgroud) ruby model-view-controller design-patterns model ruby-on-rails
我有几个模型,每个模型有40个属性.它们被标准化,只是我们正在处理的模型必须具有多个属性.除此之外,它是一个非常标准的rails 4.2应用程序(从rails 3.2升级).该应用程序既可用于提供带有ajax调用的动态页面,也可用于json,因此可供各种json客户端使用.
所以请致电:http://example.com/products/1.json - 返回json和http://example.com/products/1返回haml-parsed视图.
我正在使用的JavaScript库(KendoUI)返回更新的整个记录,而不仅仅是更新的字段.目前没有办法避免,除非我想根据他们的支持论坛重写KendoUi Grid.
因此,用户可以搜索所有产品,并向她显示产品的所有属性,然后根据她的访问级别,她可以更新某些字段(几个定价点和描述),但是ajax请求包含所有属性.因此,我得到了ActiveModel :: ForbiddenAttributesError
我怎样才能正确(可以这么说的轨道)过滤掉更新后的参数?现在我正在对@ product.attributes && params [:product]进行哈希比较,以确定是否传递了更新/新属性..diff自Rails 4.0.2起已被弃用
我的管理员可以更改这些大型模型上的几乎所有属性(时间戳,ID和其他一些除外).最好的方法是做什么而不是做params [:product] .require(:base_cost).permit(:vendor_cost,:client_cost)30个奇数属性?如果应用程序处于开发状态并且属性发生变化,则很快就会成为维护这些列表的问题.我想我可以使用某种CONSTANT - ALLOWED_ATTRIBUTES或ADMIN_ATTRIBUTES和USER_ATTRIBUTES,并将其传递给permit.但有点感觉不Railsy?
json ruby-on-rails kendo-ui strong-parameters ruby-on-rails-4
如何使用mysql获取字符串的最后12位数?
假设我有一个带有跟踪号的varchar字段,可能长度为5到20个varchars.但是如果有更少,我只需要选择最后12位或更少.
所以在一个 field = 12345678123456789012
我只需要得到括号中的内容
field = 12345678[123456789012]
Run Code Online (Sandbox Code Playgroud)
我看到了一些使用mid等的例子,但他们没有产生预期的结果,或者我找不到一个有意义的例子:-(
谢谢.