0

假设有模型customeraccount并且address

class Customer
  has_many :accounts
end

class Account 
  belongs_to :customer
  has_many :addresses
end

class Address
  belongs_to :account
end

给定一个对象地址,它的客户可以被检索为:

customer = address.account.customer

现在让我们将关系存储在字符串变量address_relation = 'account.customer'中。给定一个address对象,有没有办法customer用字符串变量检索它,address_relation例如:

customer = address.address_relation?

谢谢您的帮助。

4

2 回答 2

2

我会做类似的事情

customer = address.address_relation.split(".").inject(address) do |object, method| 
  object.send(method)
end

send如果您的关系链中try有一个 nil 对象,您可以切换

于 2013-03-11T15:08:52.507 回答
1

不确定我是否正确理解了这个问题,但我想你可以使用 Ruby 的send方法来动态解决模型关系。

object  = customer
methods = "account.customer".split(".")

methods.each do |m|
  object = object.send(m)
end
于 2013-03-11T15:04:30.047 回答