Ruby on rails 4 尝试找出一个特定的RubyonRails习惯用法:动态访问对象';会员协会
这应该很简单,但我找不到答案 我正在尝试动态调用对象上的成员关联Ruby on rails 4 尝试找出一个特定的RubyonRails习惯用法:动态访问对象';会员协会,ruby-on-rails-4,rails-activerecord,Ruby On Rails 4,Rails Activerecord,这应该很简单,但我找不到答案 我正在尝试动态调用对象上的成员关联 @user.account.id.inspect #This will inspect user's account id as normal @user.group.id.inspect #Same as above only with group id @user.foo.id.inspect #etc, etc, etc... 这是直截了当的。关于手头的问题 我想循环所有可能的情况:只有动态的关联和上面的操作 User.r
@user.account.id.inspect #This will inspect user's account id as normal
@user.group.id.inspect #Same as above only with group id
@user.foo.id.inspect #etc, etc, etc...
这是直截了当的。关于手头的问题
我想循环所有可能的情况:只有动态的关联和上面的操作
User.reflect_on_all_associations(:has_one).each do |association|
#this works as normal
association.name #returns "account", "group", "foo", etc...
#The following won't work (Obviously)
@user.{association.name}.id
#I'm trying to find an idiom which
#will essentially allow me to ninja swap "{association.name}"
#with "account", "group", "foo", etc... Such that:
#@user.{association.name}.id
#...is functionally the same as @user.account.id, @user.group.id, @user.foo.id, etc...
end
仅供参考,PHP中的适当习惯用法与此类似:
$user->${$association->name}->id; #parses out to $user->account->id
谢谢 @user.send(association.name).id应该有效。这个答案非常简单