小编kon*_*ung的帖子

当使用savon进行ruby soap通信时,为什么"wsdl"命名空间被插入操作名称?

我正在尝试访问我无法控制的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)

ruby soap savon

8
推荐指数
3
解决办法
8636
查看次数

在Rails App中使用Active Directory/LDAP组作为权限\角色的示例

我想知道其他人是如何实现这种情况的.我有一个内部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的系统访问的这种特定使用中是否存在使用一个与另一个的优点/缺点.如果您有良好的经验,建议其他系统.

谢谢!!!

ruby permissions ldap ruby-on-rails active-directory

8
推荐指数
1
解决办法
3809
查看次数

将TrueClass/FalseClass的值输出为整数或字符串/

我试图找出是否有一种简单的方法来执行以下操作,将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 ruby-on-rails

6
推荐指数
2
解决办法
4778
查看次数

Ruby/ruby​​zip替代品能够处理rar/tar/zip/7z?

我想知道是否有人知道Ruby的rubyzip替代品,可以处理各种格式,特别是zip/rar/7z?

我知道libarchive,但它并不完全符合我的目的(这是一个很好的宝石).(澄清,libarchive - 对我不起作用 - 因为我需要能够在Windows上运行.(是的,我知道很难成为我)) Libarchive实际上适用于Windows,但仍然不适合我的目的(7zip& rar格式支持)

现在我最终运行系统命令到操作系统,但我想要一些独立于操作系统的东西,并且能够处理这些格式 - 读写.

谢谢

ruby zip ruby-on-rails 7zip rar

6
推荐指数
1
解决办法
3782
查看次数

Rails中的多态关联3

我想我会疯了.

假设我有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)

以及各种变化.无论我做什么,我都无法通过轨道预加载所有表格.我究竟做错了什么?

polymorphism ruby-on-rails

6
推荐指数
1
解决办法
4982
查看次数

Rails 3.1,资产管道和生产模式中的IE 6和7 - 一些CSS和js没有正确加载

在生产模式下试用我的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中.

尝试清除缓存(在浏览器和服务器上).重新编译资产.什么都看不到帮助.

有没有人碰到任何东西 - 像那样?

jquery ruby-on-rails superfish asset-pipeline

6
推荐指数
1
解决办法
1463
查看次数

对于具有大量小写和长读的 Rails 前端的 PostgreSQL 集群,最低硬件要求和设置是什么?

背景:

试图找出我正在构建的应用程序的最低要求。对于开发人员来说,我对 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)数据相当关键。重点是能够在收集数据后运行准确的报告。然而,有两种选择可以缓解这个问题:

  • 我可以根据谷歌地图数据和最后的已知点来估计它(就在数据丢失之前,以及在重新建立连接之后。)
  • 数据首先保存在手机上的 sqlite 存储中,每天一次(或在应用程序启动时)与服务器同步/验证。一旦验证/同步成功,手机上的数据就可以轮换(比如超过 1 个月的任何东西都可以从手机上擦除)

实际问题详情

所以我的问题是针对处理这种规模应用程序的人,您最初的 PostgreSQL 设置是什么——集群配置和硬件(云)方面,以及扩展的难易程度?


为了防止不相关的建议和答案:

NoSQL 替代品

我考虑过 NoSQL 替代品,如 CouchDB、MongoDB 等。Riak 实际上是赢家,考虑到单人团队很容易管理,而且我只需要 3 台数据库服务器即可拥有一个工作复制集群。但是在规划我的应用程序后,我发现 NoSQL 不适合这个应用程序,它属于 RDBMS 的 .

NoSQL 替代方案和 …

database postgresql database-design ruby-on-rails

6
推荐指数
1
解决办法
6239
查看次数

我应该将我的自定义方法从控制器移动到模型吗?

假设我有一个 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

5
推荐指数
1
解决办法
1515
查看次数

Rails 4.2强大的参数和解析json put/update上的更改属性

背景

我有几个模型,每个模型有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

第1部分

我怎样才能正确(可以这么说的轨道)过滤掉更新后的参数?现在我正在对@ product.attributes && params [:product]进行哈希比较,以确定是否传递了更新/新属性..diff自Rails 4.0.2起已被弃用

第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

5
推荐指数
1
解决办法
467
查看次数

如何从MySQL中的字符串中获取最后12位数?

如何使用mysql获取字符串的最后12位数?

假设我有一个带有跟踪号的varchar字段,可能长度为5到20个varchars.但是如果有更少,我只需要选择最后12位或更少.

所以在一个 field = 12345678123456789012

我只需要得到括号中的内容

field = 12345678[123456789012]
Run Code Online (Sandbox Code Playgroud)

我看到了一些使用mid等的例子,但他们没有产生预期的结果,或者我找不到一个有意义的例子:-(

谢谢.

mysql truncate gsub

4
推荐指数
1
解决办法
4179
查看次数