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