小编cha*_*sto的帖子

获取在类中声明的所有实例变量

请帮我获取在类中声明的所有实例变量,instance_methods方法同样向我展示了类中可用的所有方法.

class A
  attr_accessor :ab, :ac
end

puts A.instance_methods  #gives ab and ac

puts A.something         #gives me @ab @ac...
Run Code Online (Sandbox Code Playgroud)

ruby

46
推荐指数
2
解决办法
3万
查看次数

如何使用Rails中的instance_eval子句删除验证?

我想使用instance_eval增强现有的类.原始定义包含验证,需要存在某些字段,即:

class Dummy < ActiveRecord::Base
  validates :field, :presence => true 
end
Run Code Online (Sandbox Code Playgroud)

现在我想使用instance_eval(或任何其他方法,实际上)将其更改为可选:

Dummy.instance_eval do
  ...
end
Run Code Online (Sandbox Code Playgroud)

删除验证的正确语法是什么,因此该字段是可选的.我宁愿直接在模型层上执行此操作,而是在控制器或视图中执行奇怪的操作.实际上并不需要使用instance_eval,但据我所知,这通常是增强Rails中类的最佳方法.

编辑#1

一般来说 - 原始类是gem的一部分,我不想分叉它,也不想绑定到特定的版本.一般原因并不重要.简单地编辑原始模型比猴子修补具有更糟糕的后果.

ruby validation activerecord ruby-on-rails

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

ruby on rails - rack-cors多个来源与diffrenet资源

我正在使用rack-cors gem在我的rails应用程序中实现CORS,但我不确定如何为不同的来源定义不同的资源.

我需要这样的东西:

config.middleware.insert_before 0, Rack::Cors do

  allow do
    origins 'http://localhost:3000'
    resource '/api/*', headers: :any, methods: [:get, :post, :options, :put, :delete]
  end

  allow do
    origins 'http://localhost:6000'
    resource '*', headers: :any, methods: [:get, :post, :options, :put, :delete]
  end

end
Run Code Online (Sandbox Code Playgroud)

所以它允许" http:// localhost:3000 "只访问'/ api/*'并允许' http:// localhost:6000 '访问所有.可能吗?

上面的代码是正确的代码/语法吗?

谢谢.

ruby ruby-on-rails rack-cors

7
推荐指数
2
解决办法
3205
查看次数