0

誰かがすでにこれを経験していることを願っています。私を助けてください、どうすればこの問題を解決できますか:

class Article < ActiveRecord::Base
  belongs_to :author
  belongs_to :publisher
  has_one :address, :through => :publisher
end

class Author < ActiveRecord::Base
  has_many :articles
  has_many :addresses, :through => :articles, :source => :address
end

「著者」の「アドレス」を取得しようとすると、コンソールに次のエラーが表示されます。

ActiveRecord::HasManyThroughSourceAssociationMacroError: Invalid source reflection macro :has_one :through for has_many :addresses, :through => :articles.  Use :source to specify the source reflection.

しかし、author.articles[0].addressうまく動作します。

どうすれば解決できるのか、アドバイスをいただければ幸いです。ありがとう。

4

2 に答える 2

0

このソリューションは、さまざまな関係タイプでもうまく機能しました。

例: User.registrations.join_table.periods

ただし、マップされているものに active_record メソッドを適用することはできません。

例 user.periods(:order => :date) 例 user.periods.model など..

ありがとう

于 2010-08-05T18:42:45.093 に答える
0

has_manyAR は、 aから a を調達することを好まないhas_one。しかし、このメソッド on を使用すると、すべてのアドレスを簡単に取得できますAuthor

def addresses
  articles.map {|article| article.address }
end
于 2009-11-07T16:42:15.613 に答える