0

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を使用して取得する方法はありますか?customeraddress_relation

customer = address.address_relation?

助けてくれてありがとう。

4

2 に答える 2

2

私は次のようなことをします

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

リレーションチェーンに nil オブジェクトがある可能性がある場合は、切り替えることができsendますtry

于 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 に答える