Tag: ruby on rails 4

Ldap没与Devise合作

我正在尝试使用Devise和Ldap然而我似乎在使用ldap设计的初始设置中做错了我已经在使用db auth设计但是,我想切换并使用我现有的AD。 任何帮助将不胜感激! 我有这个只使用LDAP的测试脚本,它运行得很好 require ‘net/ldap’ class ActiveDirectoryUser SERVER = ‘myactivedir.mydomain.com’ PORT = 389 BASE = ‘DC=mydomain,DC=com’ DOMAIN = ‘mydomain.com’ def self.authenticate(login, pass) return false if login.empty? or pass.empty? conn = Net::LDAP.new :host => SERVER, :port => PORT, :base => BASE, :auth => { :username => “#{login}@#{DOMAIN}”, :password => pass, :method => :simple } if […]

我如何保持has_many:在序列化为JSON并返回Rails 4.0.3时通过关系?

如何转换为JSON并返回并保持关系? 它认为当我取消包裹对象时它们不存在! irb(main):106:0* p = Post.last => # p.tags => #<ActiveRecord::Associations::CollectionProxy [# 2 #### !!!!!!!!!!!! irb(main):110:0> json = p.to_json => “{\”id\”:113,\”title\”:… }” irb(main):111:0> p2 = Post.new( JSON.parse(json) ) => # p2.tags => # irb(main):113:0> p2.tags.count => 0 #### !!!!!!!!!!!! 这是模型 class Post :destroy has_many :tags, :through => :taggings 有人建议,但不起作用 irb(main):206:0* Post.new.from_json p.to_json(include: :tags) ActiveRecord::AssociationTypeMismatch: Tag(#60747984) […]

使用bcrypt生成的Rails密码是否可移植?

我有一个现有的Web应用程序,有几千个用户,我正在移植到Rails。 当我重写和重构这个应用程序时,我可能需要在任意数量的不同服务器上运行它以进行开发,测试和生产。 我在我的用户模型中使用Rails的内置has_secure_password方法,但我担心密码数据的可移植性。 我需要将数据库的内容从一台机器移动到另一台机器,以便在不同的环境中进行测试,并且非常重要的是我可以在每个环境中使用相同的用户和密码集测试用户身份validationfunction。 到目前为止,很容易找到关于bcrypt-ruby如何与Rails has_secure_password一起工作的答案,但经过数周的搜索后,我还没有找到一个明确的答案。 如果has_secure_password导致WorkFactor + Salt + HashedPassword连接并保存到password_digest数据库列,那么如果移动到任何其他计算机(假设任何其他计算机在类Unix操作系统上运行Rails),那么可以重新生成该哈希并进行可靠比较吗? 或者换句话说 – 使用Rails的has_secure_password生成的bcrypt-ruby密码has_secure_password可移植? 跟进问题 :如果盐总是随机生成的(我看到相同的密码使用不同的哈希值,所以我不认为盐是从密码本身的文本创建的)那么Rails应用程序将如何能够可靠地生成在登录表单上重新提交密码,并将其与数据库中的密码进行比较。 显然,为了比较它,它必须首先知道盐是什么。 它是如何做到的?

Simple_form必填字段不起作用 – Ruby on Rails

我在一个使用simple_form构建的RoR应用程序中有一个提交表单。 当字段为空时,应用程序仍然会进入下一步而不会提示错误或警告。 默认情况下,字段应该是required: true ; 但即使手动编写它也行不通。 该应用程序有3个步骤:NewPost(新视图) – >预览(创建视图) – >发布。 使用我的控制器和视图的摘录会更清楚: def new @post= Post.new end def create @post = Post.new(params.require(:post).permit(:title, :category_id)) if params[:previewButt] == “Continue to Preview your Post” render :create elsif params[:createButt] == “OK! Continue to Post it” if @post.save! redirect_to root_path else render :new end elsif params[:backButt] == “Make changes” render […]

在Rails和ActiveRecord中查询时忽略某些字段

我知道我可以指定某些字段来使用pluck查询数据库。 ids = Item.where(‘due_at < ?', 2.days.from_now).pluck(:id) 但是我想知道,是否有一种方法可以指定某些字段,我希望避免从数据库中查询。 某种反拔? posts = Post.where(published: true).do_not_lookup(:enormous_field)

如何在编辑表单中预先填充collection_check_boxes?

GitHub回购: https : //github.com/Yorkshireman/mywordlist 我用谷歌搜索了这个。 我确定有一种方法,可能需要一些html选项哈希中的代码,但我无法解决它。 有任何想法吗? 当访问具有一个或多个类别的Word的_edit_word_form.html.erb部分时,“类别”复选框全部未选中,要求用户再次选择它们,即使他们不想更改类别。 :title和:description的文本字段已预先填充(谢天谢地)。 _edit_word_form.html.erb: 0 %> AND/OR… 单词/ index.html.erb的相关部分: words_controller.rb: class WordsController < ApplicationController before_action :set_word, only: [:show, :edit, :update, :destroy] before_action :authenticate_user! # GET /words # GET /words.json def index @words = Word.all @quotes = Quote.all end # GET /words/1 # GET /words/1.json def show end # GET […]

Net :: HTTP对HTTPS请求的响应非常慢

出于某种原因,在我的开发机器上,我对通过Net :: HTTP执行的HTTPS请求的响应非常非常慢。 我尝试过RestClient和HTTParty,他们都有同样的问题。 它似乎无处不在。 我已经毫无问题地提出了数百次这些请求,但今天它们的速度令人难以忍受。 pry(main)> puts Time.now; HTTParty.get(‘https://api.easypost.com/v2/addresses’); puts Time.now; 2015-04-29 08:07:08 -0500 2015-04-29 08:09:39 -0500 如您所见,响应耗时2.5分钟。 而且不只是这个EasyPost API URL。 我已经尝试过多次SSL请求到我知道可以连接的服务器( https : //google.com,https://weather.com等),它们都会导致相同的行为。 此外,我注意到从HTTP重定向到HTTPS的请求也会发生同样的情况。 现在,查看非ssl请求: pry(main)> puts Time.now; HTTParty.get(‘http://lookitsatravis.com’); puts Time.now; 2015-04-29 08:12:22 -0500 2015-04-29 08:12:22 -0500 瞬间。 是什么赋予了? 我猜这是Ruby和OpenSSL之间的某些配置问题。 我重新安装了两个(使用Ruby 2.2.1和OpenSSL 1.0.2a),我正在使用OS X Yosemite 10.10.2来获取它的价值。 重新安装了我的所有gem,但问题仍然存在。 我尝试更改我的DNS设置以防万一,但没有骰子。 有没有其他我可以看到的或我可以改变的任何配置将解决这个问题?

是否仍然可以在导轨4中使用测试单元?

从Rails 3.2升级到Rails 4之后,我的应用程序正常运行,但我用测试单元编写的测试是一场灾难。 据传Minitest与测试单元“兼容”。 但是,如果我尝试使用(现在捆绑的)Minitest,那么存在一系列差异 – 从assert *语句名称和参数到(很明显)许多其他大事和微妙的事情。 如果我试图避免使用Minitest并尝试将我的测试单元gem保留在我的Gemfile中,则rake测试会爆炸,说, undefined method ‘refute_predicate’ for class ‘ActiveSupport::TestCase’ 这是因为已经打电话 require ‘rails/test_help’ 🙁 我一直在寻找,但还没有想出任何继续使用测试单元的方法。 唯一的替代方案似乎是(对我们来说,大规模)重构我们的测试代码,因为我们80%的测试都会以某种方式破坏,或者Minitest与测试单元的不兼容性。 然而阅读http://weblog.rubyonrails.org/2013/6/25/Rails-4-0-final/和http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-3- 2-to-rails-4-0我发现实质上没有提到这一点 – 我觉得必须遗漏一些东西。 是否有可能使Minitest更系统地与测试单元兼容? 或者继续在Rails 4中使用测试单元?

如何制作一个可选的强参数键仍然可以过滤嵌套在其中的参数?

我在我的控制器中有这个: params.require(:item).permit! 让我们假设这个rspec规范: put :update, id: @item.id, item: { name: “new name” } 它按预期工作,没有错误。 但是,如果我使用这个: put :update, id: @item.id, item: nil 我得到了ActionController::ParameterMissing ,我不想得到它。 它与我用于其他操作的控制器宏有关,通过它我无法控制发送的参数(宏检查用户凭据,因此我并不真正关心实际测试#update操作,而是我只是测试before_filters for it)。 所以我的问题是: 如何使params[:item]可选,但如果它存在,仍然在其中过滤属性?

Rails获取仅涉及current_user的活动源

我在我的rails应用程序上使用public_activity gem来获取所有current_users关注者活动。 它工作得很好,但我更愿意只获得与current_user相关的活动,因此它更像是一个Notification系统而不仅仅是Activities。 这是我目前在我的活动控制器中所拥有的 @activities_all = PublicActivity::Activity.order(“created_at desc”).where(owner_type: “User”, owner_id: current_user.followed_users.map {|u| u.id}).all @activities = @activities_all.group_by { |t| t.created_at.beginning_of_day } 如前所述,这给出了current_user的关注者所做的所有活动(比如在post上创建/评论)。 我更喜欢它,如果我可以让它工作在我的追随者与我的post互动的所有活动,等等。当用户评论和评论在我的post上时,我希望它成为@activities的一部分。 乍一看,我认为这是另一个查询,我只是无法弄清楚查询(如果查询是正确的方式)。 这是一些前端代码,如果这将有所帮助 谢谢大家的帮助。 节日快乐