내 사용자 모델에서는 다음을 가질 수 있습니다.
has_many :tasks
내 작업 모델에서
belongs_to :user
그런 다음 외래 키 ‘user_id’가 작업 테이블에 저장되어 있다고 가정하면 다음을 사용할 수 있습니다.
@user.tasks
내 질문은 사용자 작업을 다음과 같이 참조 할 수 있도록 has_many 관계를 어떻게 선언합니까?
@user.jobs
… 또는 …
@user.foobars
고마워요.
답변
답변
alias_attribute
여전히 작업으로 참조 할 수있는 경우 에도 사용할 수 있습니다.
class User < ActiveRecord::Base
alias_attribute :jobs, :tasks
has_many :tasks
end
답변
@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
답변
has_many through를 사용하고 별명을 지정하려는 경우 :
has_many :alias_name, through: model_name, source: initial_name
답변
이 두 가지 방법으로 할 수 있습니다. 하나는 “as”를 사용하는 것입니다
has_many :tasks, :as => :jobs
또는
def jobs
self.tasks
end
분명히 첫 번째 방법이 가장 좋은 방법입니다.