rails -v = 4.0
ruby -v = 2.1.1
has_one : through에 심각한 문제가 있습니다. 모든 Google 1st 2 페이지 링크는 파란색으로 표시됩니다 (모두 살펴 보았습니다).
내 문제는 내가하려고 할 때
post = Post.last
post.build_user
이 말을 '정의되지 않은 메서드`build_user . 협회가있는 수업은 다음과 같습니다.
class Post < ActiveRecord::Base
has_one :user_post
has_one :user, class_name: "User", through: :user_post
accepts_nested_attributes_for :user
end
class UserPost < ActiveRecord::Base
belongs_to :user
belongs_to :post
end
class User < ActiveRecord::Base
has_many :user_posts
has_many :posts, through: :user_posts
end
누군가이 문제를 해결하는 데 도움을 주시면 정말 좋을 것입니다.
감사합니다.
당신은 설정 A를 시도하는 Many-to-Many Relationship
사이에 Post
하고 User
있지만, 현재의 설정이 올바르지 않습니다.
당신은 사용해야하는 has_many
대신 has_one
에 Post
모델.
class Post < ActiveRecord::Base
has_many :user_posts
has_many :users, through: :user_posts
end
그런 다음 사용자를 다음과 같이 빌드 할 수 있습니다.
post = Post.last
post.users.build
최신 정보
undefined method
build_user ' 로 오류가 발생 합니다. because you can only use
post.build_user if association between
Post and
User is
has_one`이며 아래와 같이 정의됩니다.
class Post < ActiveRecord::Base
has_one :user
end
class User < ActiveRecord::Base
belongs_to :post # foreign key - post_id
end
업데이트 2
또한 논리적으로 A user has_many posts AND A post has one User
설정은 이상적으로
class Post < ActiveRecord::Base
belongs_to :user # foreign key - user_id
end
class User < ActiveRecord::Base
has_many :posts
end
그런 다음 사용자에 대한 게시물을 다음과 같이 작성할 수 있습니다.
user = User.last
user.posts.build
게시물에 대한 사용자를 구축하려면 :
post = Post.last
post.build_user
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다