Tag: ruby on rails

如何为特定方法启用猴子补丁?

我正在使用gem,由于某种原因,它的一个方法需要在我的一些代码可以使用之前进行修补。 问题出在这里,我怎么能只为我的一些代码启用这个补丁呢。 对于类中的某些方法,我需要启用此补丁; 一些我想禁用此补丁。 这该怎么做? class FromGem def BlahBlah #patch here end end class A def Test1 #need patch end def Test2 # don’t need patch end end

如何使用attr_accessible创建工厂?

如何处理工厂和attr_accessible ? 我的例子: # model class SomeModel attr_accessible :name, full_name, other_name end #spec require ‘spec_helper’ describe “test” do it do create(:some_model, name: “test name”, user: User.first) #factory end end #error ruby(17122,0x12a055000) malloc: *** error for object 0x8: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug 我认为错误是因为user_id不在attr_accessible属性中。

元编程有副作用时如何重构?

我正在使用Ruby on Rails 3.2.9和Ruby 1.9.3-p125。 在我之前的问题之后,我最终得到了一个关于元编程自编码的acts_as_customizable插件的问题,因为相关的代码对其他类有副作用 ,而不是“充当可自定义的”。 总结一下这个问题:为Article模型“内部”(通过元编程)声明的acts_as_customizable方法为Comment模型添加了一个customize方法,为了节省时间,Rails不会在启动时加载所有这些类,使应用程序引发NoMethodError – undefined method ‘customize’ for # 直到加载Article类。 建议的解决方案是在Comment模型中的require_dependency ‘article’ ,但我正在寻找另一种方式(也许,更好的建议的方式)让应用程序正常工作,但没有任何问题像在这个问题中解释。 也就是说,我想保留一个*短代码**和相同的行为,但使用更“合适”的方式来制作东西,可能会改变类的加载过程或计划对整个代码进行大量重构,如果有必要的话。 我应该如何处理这种情况? 你有什么想法? 更新 :经过一些研究,我发现问题仅出现在开发模式中,因为config.cache_classes设置为false使得每个请求都要重新加载类。 注意 :我想指出元编程在我的案例中非常有用, Article和Comment类在我的“定制”概念方面彼此高度相关。 所以我想找到一个解决方案来缓解对基础行为的改变 。 *就我而言,元编程(即使它有副作用)使我避免了很多代码语句。

simple_form_for – 具有不同参数的多个提交按钮

我有一个表单中的复选框列表,其中有两个按钮。 我试图将单独的参数传递给按钮,如下所述: 在rails 3.2.12的simple_form视图中点击提交按钮有没有办法传递参数? 但它没有传递参数。 我的代码如下: … … 我已经尝试了各种其他方法,并且已经看到一些关于给按钮分开id并调用params [:commit]的post,但是没有发送commit params。 任何帮助都非常有用。 编辑: 表单按钮的HTML输出是: Rails控制台日志: Started POST “/school/2/classes/3/pupils/edit_multiple” for 127.0.0.1 at 2017-08-08 17:08:58 +0100 Processing by Schools::Admin::PupilsController#edit_multiple as HTML Parameters: {“utf8″=>”✓”, “authenticity_token”=>”0ncVG1+MfuS13ystwdUe/vEzF30f1iHS/F0u0DDflOXKnkw8hcUhv/n2eJZuZHOA4gZxuITahMFbyTdG/B5cEQ==”, “pupil_ids”=>[“134”, “129”], “school_id”=>”2”, “group_id”=>”3”}

具有多个条件的范围基于多个条件的条件

是否有可能使用类似的东西 scope :state, ->(state) { merge(where(“start_time = ?”, Time.now.utc.beginning_of_day, Time.now.utc.beginning_of_day)) if state.include?(“open”) merge(where(“end_time ?”, Time.now.utc.beginning_of_day)) if state.include?(“upcoming”) } 如果我使用此范围,则只有最后一个范围可用。 例如: 州([“即将来临”]) – >工作 state([“open”]) – >不使用的地方 state([“deleted”],[“coming”]) – >仅限使用即将发生的条件的地方

rails 5.0.1已经初始化

我试图生成一个用户,但它出现这个错误,如果我给一个rails s出现相同的错误,我什么都不做,我给了一个bundle update ,一个bundle install在gem,没有任何变化。 我将4.6.2的GEMFILE中的rails版本更改为5.0.1并进行了bundle update 。 我想使用版本5,但我不知道如何更新,我看到一个教程说我可以这样做,所以我做了,只是现在出现这个错误。 root@ubuntu:~/Projeto-video-3# rails model User name document kind status:integer notes:text /usr/lib/x86_64-linux-gnu/ruby/2.4.0/openssl.so: warning: already initialized constant OpenSSL::VERSION /usr/lib/x86_64-linux-gnu/ruby/2.4.0/openssl.so: warning: already initialized constant OpenSSL::OPENSSL_VERSION /usr/lib/x86_64-linux-gnu/ruby/2.4.0/openssl.so: warning: already initialized constant OpenSSL::OPENSSL_LIBRARY_VERSION /usr/lib/x86_64-linux-gnu/ruby/2.4.0/openssl.so: warning: already initialized constant OpenSSL::OPENSSL_VERSION_NUMBER /usr/lib/x86_64-linux-gnu/ruby/2.4.0/openssl.so: warning: already initialized constant OpenSSL::OPENSSL_FIPS /usr/lib/x86_64-linux-gnu/ruby/2.4.0/openssl.so: warning: already initialized constant OpenSSL::Config::DEFAULT_CONFIG_FILE /usr/lib/x86_64-linux-gnu/ruby/2.4.0/openssl.so: […]

获取意外的用户参数并且无法访问Rails中的密码参数

我开始在Rails with React中设置用户身份validation系统,并且发生了两件奇怪的事情: 1)我的POST请求包括一个user参数,我很确定我没有自己配置(我跟着一本Rails指南书)。 此user参数包含所有其他参数的重复,如下所示: Started POST “/api/user” for 127.0.0.1 at 2018-01-29 21:54:42 -0800 Processing by Api::UserController#create as JSON Parameters: {“email”=>”test@test.com”, “password”=>”[FILTERED]”, “first_name”=>”test”, “last_name”=>”test”, “groupname”=>”test”, “admin”=>”true”, “user”=>{“email”=>”test@test.com”, “first_name”=>”test”, “last_name”=>”test”, “groupname”=>”test”, “admin”=>”true”}} Can’t verify CSRF token authenticity. No template found for Api::UserController#create, rendering head :no_content Completed 204 No Content in 39ms (ActiveRecord: 0.0ms) 2)如果您没有注意到,我的password参数是唯一一个未包含在我的user参数中的password (可能是因为我在我的users模型中调用了has_secure_password ?),我无法弄清楚如何添加它到我的private变量。 […]

Rails聊天应用程序的FAYE_URL值应该是多少?

我正在尝试使用“private_pub”gem创建基于Rails的聊天Web应用程序,它在我的localhost服务器上运行良好。 现在我的网站托管在DigitalOcean上,我想在服务器上推送聊天代码,看看实时聊天应用程序将如何运作。 这是我的private_pub.yml文件 development: server: “http://localhost:9292/faye” secret_token: “secret” test: server: “http://localhost:9292/faye” secret_token: “secret” staging: server: secret_token:”secret_key” signature_expiration: 3600 # one hour production: server: secret_token: “secret_key” signature_expiration: 3600 # one hour 我的问题是我应该怎样做才能使它在任何Linux服务器上运行(这里是Digital Ocean)。 我在DigitalOcean上使用Nginx服务器。 private_pub.yml文件中FAYE_URL的值应该是多少? rackup private_pub.ru -s thin -E production 我必须在服务器终端上运行机架命令吗? 或者还有其他方法可以在不同的服务器上托管Faye吗?

Ruby合并哈希值

我编写了一个API来组织我的日常用户数据。 原始格式就像 “dau”: { “2017-05-02”: 1, “2017-05-04”: 2, “2017-05-05”: 2, } “new_user”: { “2017-05-02”: 1, “2017-05-04”: 0, “2017-05-07”: 0, } 很难在HTML表格中逐行显示。 因此,我希望格式成为这个格式。 但是,我不知道如何处理。 info: { “2017-05-02”: { dau: 1, new_user: 1 }, “2017-05-04”: { dau: 2, new_user: 0 }, “2017-05-05”: { dau: 2 }, “2017-05-07”: { new_user: 0 } }

使fields_for块有条件

我有一个用户模型和一个讲师模型。 用户和教师之间存在一对一的关系。 有些用户将是教师,有些则不会。 因此,我有一个注册表单,使用fields_for方法写入两者。 如何只在他们说自己是教师的情况下才能写入教师表,例如通过复选框。 当他们写作时,我想保持表格的其他表格的validation 理想情况下,如果我可以通过模型做到这一点,这将是最好的,但我对所有建议持开放态度。 讲师模型 class Instructor < ActiveRecord::Base belongs_to :user validates_presence_of :school_url, :etc… attr_accessible :school_url, :etc… end 用户模型 class User :destroy validates_uniqueness_of :email validates :email, :confirmation => true accepts_nested_attributes_for :instructor attr_accessible :email, :password, :instructor_attributes, :etc end HAML中的表格 – resource.build_instructor – form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| = hidden_field_tag […]