0

これはかなり基本的なことのように思えますが、実際には Rails でこのシナリオを定義するのは少し難しいと思います...

おそらく、あなたの誰かがいくつかのガイダンスを提供できますか?

したがって、3 つのテーブル、ユーザー、請求書、および User_Invoice_Viewers があります (これらは基本的に、ビューアー アクセス権を持つユーザーを請求書にマップします)。

今私のモデル:

ユーザー.rb:

has_many :invoices
has_many :user_invoice_viewers
has_many :invoices, through :user_invoice_viewers

Invoice.rb

belongs_to user_invoice_viewers
belongs_to :user

User_Invoice_Viewers.rb

belongs_to :users
belongs_to :invoices

今、これは間違っているようです...私はUserモデルでhas_many :invoicesを繰り返すので、実行時に競合が予想されます:User.invoices ...

これに対する最善の解決策は何ですか?すべてを user_invoice テーブルに置くことを考えていましたが、パフォーマンス上の理由から、閲覧者よりも多くの所有者がいると予想されるため、請求書とその所有者の間に直接的な依存関係を構築することにしました...

ありがとう

4

1 に答える 1

1

関連付けに :class_name オプションを使用して、2 つの関係の名前が異なるようにすることを検討します。このようなもの:

class User < ActiveRecord::Base

  has_many :invoices
  has_many :user_invoice_viewers
  has_many :viewable_invoices, through :user_invoice_viewers, :class_name => "Invoice"

  ...

end
于 2012-07-13T03:06:02.667 に答える