Tag: ruby on rails 4

使用seed.rb文件创建记录时出现CarrierWave :: FormNotMultipart错误

我有一个有image列的模型。 我正在使用CarrierWave上传图片(我正在关注这个rails cast来做这件事。 现在,我想使用seed.rb文件创建一些默认记录,但我未能为图像提供正确的parh / url。 所以,我在List item app/public/images/文件夹中有图像,这是seed.rb文件中的代码: gems = { test1: { name: ‘test1’, description: ‘test1’, image: ‘/public/images/test1.png’, }, test2: { name: ‘test2’, description: ‘test2’, image: ‘/public/images/test2.png’ } gems.each do |user, data| gem = DemoGem.new(data) unless DemoGem.where(name: gem.name).exists? gem.save! end end 当我运行rake db:seed命令时,我收到以下错误: CarrierWave :: FormNotMultipart:您尝试将字符串或路径名分配给上传器,出于安全原因,这是不允许的。 谁能告诉我们如何为图像提供正确的url ?

Rails 4内存分析

我需要分析rails 4应用程序的内存使用情况(使用ruby MRI)。 一点谷歌搜索让我进入http://guides.rubyonrails.org/v3.2.13/performance_testing.html 我有两个问题: 它与导轨4兼容吗? 我正在使用rspec。 似乎我的rake test品尝不可用( rails generator performance_test )。 当我输入rake test:profile ,我收到了Don’t know how to build task ‘test:profile’ 。 有人知道如何解决这个问题吗? 在此先感谢您的帮助。

匿名模块可以用于什么目的?

Ruby应用程序中的匿名模块可以用于什么目的? 概念本身很容易掌握,但我无法想象你曾经使用过这样的东西的任何理由。 他们解决了什么问题?

分别validation用户和管理员

class ApplicationController [“welcome#index”] # before_filter :authenticate_user! :except => [“welocme#index”] def after_sign_in_path_for(user) # user_dashboard_index_path user_dashboard_index_path end def after_sign_out_path_for(user) welcome_index_path end after_filter :authenticate_admin! def after_sign_in_path_for(admin) admin_dashboard_index_path end def after_sign_out_path_for(admin) welcome_index_path end end 管理员不应访问用户仪表板,同样用户不应访问管理仪表板。 我怎样才能做到这一点?

多个路由使用相同的控制器?

有没有办法编写以下路由,所以你不必每次都指定相同的控制器?… get ‘jobs’ => ‘pages#jobs’ get ‘contact’ => ‘pages#contact’ get ‘terms’ => ‘pages#terms’ get ‘privacy’ => ‘pages#privacy’

Rails 4更新嵌套属性

更新嵌套属性追加而不是更新有许多关系我试图使用Rails 4 Update_attributes Class Person <ActiveRecord::Base has_many :pets accepts_nested_attributes_for :pets end Class Pet < ActiveRecord::Base belongs_to :person end 在我的控制器中,我正在接受params为{id:23,house_no:’22A’,pets:[{name:’jeffy’,type:’dog’},{name:’sharky’,type:’fish’} ]} 我的更新方法是 def update @Person = Person.find(params[:id]) if @Person.update(person_params) @Person.save render ‘persons/create’, status 200 else render ‘persons/create’, status 400 end end private def person_params person_params = params.permit(:house_no) person_params.merge! ({pets_attributes: params[:pets]}) if params[:pets].present? person_params end 现在,当我更新它并且如果该人已经有宠物时,则新宠物被附加而不是更新,例如,如果身份1的人有1只名为“老虎”的宠物并且我用2只名为“Shasha”的宠物更新该人“Monti”然后人物记录有3只宠物(Tiger,Shasha和Monti)而不是更新为2(Shasha和Monti)

rails委托方法如何工作?

在阅读了下面的jvans的答案后,再看一下源代码,我现在得到它:)。 如果有人仍然想知道rails委员会的工作原理。 所有rails都在创建一个新方法,在您运行委托方法的文件/类中使用(module_eval)。 例如: class A delegate :hello, :to => :b end class B def hello p hello end end 在委托被调用时,rails将在类A中创建一个带有(* args,&block)的hello方法(技术上在写入类A的文件中),并且在该方法中,所有rails都使用“:to”值(应该是已经在类A中定义的对象或类)并将其分配给局部变量_,然后只调用该对象上的方法或传递参数的类。 因此,为了让代表在不引发exception的情况下工作……使用我们之前的示例。 A的实例必须已经有一个引用类B实例的实例变量。 class A attr_accessor :b def b @b ||= B.new end delegate :hello, :to => :b end class B def hello p hello end end 这不是关于“如何在rails中使用委托方法”的问题,我已经知道了。 我想知道“委托”如何代表方法:D。 在Rails 4中,源代码委托在核心Ruby Module类中定义,这使得它可以在所有rails应用程序中作为类方法使用。 实际上我的第一个问题是如何包含Ruby的Module类? 我的意思是每个Ruby类都有> […]

Rails 4强参数,无需参数

我正在使用Rails 4,我不知道在没有必要参数的情况下使用强参数的最佳方法是什么。 那就是我做的: def create device = Device.new(device_params) …………….. end private def device_params if params[:device] params.require(:device).permit(:notification_token) else {} end end 我的设备型号不validation任何内容的存在。 我知道我也可以这样做: device = Device.new device.notification_token = params[:device][:notification_token] if params[:device] && params[:device][:notification_token] 有没有任何约定或正确的方法呢?

从S3下载文件到Rails 4应用程序

我有一个AWS VM,它运行每日任务并生成多个文件。 我希望我的Rails应用程序下载这些文件并将它们放在应用程序中的文件夹中。 Ruby中是否有一个gem或方法可以做到这一点? 我知道如何使用s3cmd在bash中执行此操作,我想我可以创建一个脚本来以这种方式获取它们,但是寻找更原生的rails方式。 我正在使用这些文件中的数据作为应用程序,但我不希望用户能够下载它们。

嵌套资源Rails 4.1的路由中的单个自定义参数名称

我对rails路由中嵌套资源的param名称有疑问例如我有: resources :controller1, param: :controller_id do resources :controller2 end 我有路线: controller1/:controller_id/ … controller1/:controller_controller_id/controller2/… … 我想要单一:controller1用于controller1我知道它看起来很糟糕,但这是怎么做到的? 谢谢!