Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby将字符串转换为另一个类的方法名_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby将字符串转换为另一个类的方法名

Ruby将字符串转换为另一个类的方法名,ruby,ruby-on-rails-4,Ruby,Ruby On Rails 4,目的是使用迁移将TestApp模型的首选项存储到同名的MobileConfiguration模型中 下面是一个迁移: TestApp.where.not(business_id: nil).each do |test_app| configuration = MobileConfiguration.find_or_initialize_by(business_id: test_app.business_id) MobileConfiguration::DISCLAIMERS.each {

目的是使用迁移将
TestApp
模型的首选项存储到同名的
MobileConfiguration
模型中

下面是一个迁移:

TestApp.where.not(business_id: nil).each do |test_app|
  configuration = MobileConfiguration.find_or_initialize_by(business_id: test_app.business_id)
  MobileConfiguration::DISCLAIMERS.each { |disclaimer| test_app.public_send(disclaimer) }
  configuration.max_store_distance_radius = test_app.max_store_distance_radius
  configuration.save
end
MobileConfiguration::DISCLAIMERS.each{| disclaimer | test|u app.public_send(disclaimer)}
应将test_app数据存储到mobile_配置中

免责声明
是一组型号
手机配置

MobileConfiguration::DISCLAIMERS = [:app_disclaimer, :upgrade_disclaimer, :game_disclaimer]
:app\u免责声明,:upgrade\u免责声明,:game\u免责声明
手机配置
模型中的首选项

preferences(:configurations) do
  preference_group "Disclaimer" do
    string :app_disclaimer
    string :game_disclaimer
    string :upgrade_disclaimer
  end
end

使用带有一个属性的public_send只调用该方法。您需要使用另一个属性将一些数据传递到方法中。您还需要调用setter来传递数据。因此:

class Foo
  attr_accessor :bar
end

foo = Foo.new

foo.public_send 'bar' # Just returns the current value of @bar - so nil.

foo.public_send 'bar=', 'something' # calls the setter and passes in 'something'

foo.public_send 'bar' # Now returns 'something'

可用于将参数值从一个模型复制到另一个模型。

您到底想做什么?@Surya我正在尝试将3个免责声明的值存储在TestApp to MobileConfiguration中。
[MobileConfiguration::DISCLAIMERS].each do |property|
  configuration.public_send("#{property}=",test_app.public_send(property))
 end