Authlogic:如何阻止某些IP地址注册?

在rails应用程序中使用authlogic,我想阻止某些IP地址的用户注册(因为滥用)。 这样做的正确方法是什么?

Rails ActiveRecord :: MultiparameterAssignmentErrors

我的模型中有以下代码: attr_accessor :expiry_date validates_presence_of :expiry_date, :on => :create, :message => “can’t be blank” 以及我认为的以下内容: true, :start_year => Time.now.year, :end_year => Time.now.year + 15, :order => [:month, :year] %> 但是,当我提交表格时,我得到: ActiveRecord::MultiparameterAssignmentErrors in SignupController#create /Users/x/.rvm/gems/ruby-1.8.6-p383/gems/activerecord-2.3.5/lib/active_record/base.rb:3073:in `execute_callstack_for_multiparameter_attributes’ /Users/x/.rvm/gems/ruby-1.8.6-p383/gems/activerecord-2.3.5/lib/active_record/base.rb:3028:in `assign_multiparameter_attributes’ /Users/x/.rvm/gems/ruby-1.8.6-p383/gems/activerecord-2.3.5/lib/active_record/base.rb:2750:in `attributes=’ /Users/x/.rvm/gems/ruby-1.8.6-p383/gems/activerecord-2.3.5/lib/active_record/base.rb:2438:in `initialize’ 关于问题可能是什么的任何想法? 我看着#93277没有快乐,所以有点卡住了。 在select中添加日期并不能解决问题。 最终我试图实现的是模型的属性,该属性未保存到数据库,但已经过validation。 这似乎适用于同一模型中的其他一些简单字符串字段,而不是:expiry_date 有任何想法吗?

如何从Mongoid中的嵌入文档中排除字段?

我有一个包含嵌入标签的Post文档。 有时我只显示post的标题及其标签。 在这些情况下,我在mongoid中使用以下查询: Post.only(:title).find(id) 然后我将查询结果作为json发送给客户端。 不幸的是,标签的bson id使得json比我需要的大得多。 如何从查询中排除“_id”字段? 这是我的模特: class Post include Mongoid::Document field :title, :type => String field :body, :type => String field :tags, :type => Array embeds_many :tags end class Tag include Mongoid::Document field :tag, :type => String field :type, :type => String embedded_in :post end

用于访问数组中第一个/最后一个元素的Ruby约定

这是一个关于惯例的问题。 以下两组命令返回相同的结果。 a = [1, 2, 3] a.first # => 1 a[0] # => 1 a.last # => 3 a[-1] # => 3 在Ruby,显式索引或函数中哪些是首选的? 当然,假设这是在代码中始终访问第一个或最后一个元素。 注意:我一直在考虑每个周期都会采取的周期。 因为first和last接受参数,它们会有更多的开销,但我不知道这是否会影响社区的偏好。 谢谢! 编辑 如果你看过这篇文章的评论,我的最后一段就有一个很大的争论。 虽然我没记住[x]相当于.[](x) ,但我的结论是正确的,即第一个和最后一个有更多的开销。 考虑到两者的性质,我认为这是由于first / last的参数检查。 这些需要检查是否存在参数,而[]可以假设它们存在。 码 require ‘benchmark’ a = [1..1000] MAX = 1000000 Benchmark.bm(15) do |b| b.report(“small first”) { MAX.times do; a.first; end […]

使用Datamapper和Sinatra进行简单搜索

我对Ruby和后端开发很新。 话虽这么说,我正在尝试创建一个简单的搜索表单。 我使用Sinatra作为框架,使用Datamapper作为我的ORM。 做这个的最好方式是什么? 下面是我的架构我希望搜索操作同时搜索磁贴和类别。 require ‘sinatra’ require ‘datamapper’ DataMapper.setup(:default, “sqlite3://#{Dir.pwd}/cal.db”) class Event include DataMapper::Resource property :id, Serial property :title, String property :text, Text property :contact_name, String property :contact_email, String property :location, String property :event_start_time, String property :event_end_time, String property :category, String property :created_at, DateTime property :approved, Boolean, :default => false end DataMapper.auto_upgrade! post ‘/search’ […]

pry-nav意外地工作

我把binding.pry放在我的脚本中, 但现在当它停在断点处时, 向我展示了那些信息。 哪个超出我的预期,如何解决? 帧数:0/11 From: /Users/me/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/pry-nav-0.2.4/lib/pry-nav/tracer.rb @ line 21 PryNav::Tracer#run: 12: def run(&block) 13: # For performance, disable any tracers while in the console. 14: # Unfortunately doesn’t work in 1.9.2 because of 15: # http://redmine.ruby-lang.org/issues/3921. Works fine in 1.8.7 and 1.9.3. 16: stop unless RUBY_VERSION == ‘1.9.2’ 17: 18: return_value = nil 19: […]

元编程:输出方法体作为文本

我在模块中动态定义一个方法,并且我想检查一旦该方法绑定到一个类实例,该方法的主体就是我所期待的。 有没有办法输出(作为文本)方法的主体? 模块controller_mixins.rb : module ControllerMixin instance_eval “def search_by_vendor (*args) \n” \ ” @#{self.class.name.sub(/Controller/, ”).tableize} = #{self.class.name.sub(/Controller/, ”)}.find_all_by_vendor_id(params[:vendor_id]) \n”\ “respond_to do |format| \n” \ ” format.html { render :template=>’/#{self.class.name.sub(/Controller/, ”).tableize}/index’, :layout=>’vendor_info’} \n” \ ” format.xml { render :xml => @#{self.class.name.sub(/Controller/, ”).tableize} } \n” \ “end \n”\ “end \n” end 上课与: class VendorOrdersController < ApplicationController # […]

在哈希数组中对值进行求和的更好方法

我需要在数组哈希值中对值进行求和,我在这里找到了一种方法 但看起来Ruby似乎应该有更优雅的方式。 这是有效的; sales = [{“sale_price”=>210000, “deed_type”=>”Warranty Deed”}, {“sale_price”=>268300, “deed_type”=>”Warranty Deed Joint”}] total_sales = sales.inject(0) {|sum, hash| sum + hash[“sale_price”]} 总计行不是很可读。 如果像这样的东西工作会很好; total_sales = sales.sum(“sale_price”) 这只是一厢情愿的想法,还是我忽视了一个更好的解决方案?

Watir Web驱动程序下载文件

我正在编写Ruby脚本以自动化使用Watir Web驱动程序从文件列表下载文件。 自动弹出窗口和目录选择器以将文件保存到某个位置的任何指针或方法? 谢谢。

使用“发送”而不是普通的方法调用有什么意义?

据我了解’发送’方法,这个 some_object.some_method(“im an argument”) 与此相同 some_object.send :some_method, “im an argument” 那么使用’发送’方法有什么意义呢?