假设有模型customer
,account
和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
?
感谢您的帮助。
答案 0 :(得分:2)
我会做类似
的事情customer = address.address_relation.split(".").inject(address) do |object, method|
object.send(method)
end
如果您的关系链中存在nil对象,则可以将send
切换为try
答案 1 :(得分:1)
我不确定我是否正确理解了这个问题,但我猜你可以使用Ruby的send方法动态解决模型关系。
object = customer
methods = "account.customer".split(".")
methods.each do |m|
object = object.send(m)
end