209

私の User モデルでは、次のことができます。

has_many :tasks

そして私のタスクモデルでは:

belongs_to :user

次に、外部キー「user_id」がタスクテーブルに格納されていると仮定すると、次を使用できます。

@user.tasks

私の質問は、ユーザーのタスクを次のように参照できるように has_many 関係を宣言するにはどうすればよいかということです。

@user.jobs

... また ...

@user.foobars

ありがとうございました。

4

5 に答える 5

72

alias_attributeそれらをタスクとしても参照できるようにしたい場合は、次のように使用することもできます。

class User < ActiveRecord::Base
  alias_attribute :jobs, :tasks

  has_many :tasks
end
于 2016-08-03T22:08:30.597 に答える
4

@SamSaffronの回答を完了するには:

class_nameまたはのいずれforeign_keyかで使用できますinverse_of。私は個人的にはより抽象的な宣言を好みますが、それは単に好みの問題です:

class BlogPost
  has_many :images, class_name: "BlogPostImage", inverse_of: :blog_post  
end

belongs_to子モデルに属性があることを確認する必要があります。

class BlogPostImage
  belongs_to :blog_post
end
于 2019-06-14T15:18:12.747 に答える
-65

これは 2 つの異なる方法で行うことができます。1つは「as」を使用することです

has_many :tasks, :as => :jobs

また

def jobs
     self.tasks
end

明らかに、最初のものがそれを処理する最良の方法です。

于 2009-07-22T04:18:27.117 に答える