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
Ruby on rails 4 尝试找出一个特定的RubyonRails习惯用法:动态访问对象';会员协会_Ruby On Rails 4_Rails Activerecord - Fatal编程技术网

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应该有效。

这个答案非常简单