레일 : 객체를 모델링하기 위해 다시 참조
-
19-09-2019 - |
문제
이것은 아마도 멍청한 질문이지만 좋은 대답을 찾을 수는 없습니다. 객체가 속한 모델을 다시 참조하는 가장 좋은 방법을 알고 싶습니다.
예를 들어:
class User < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :users
end
따라서 사용자의 게시물을 얻으려면 user.posts를 사용할 수 있지만 게시물의 사용자를 얻으려면 반대로 할 수 없습니다 : post.user
Post 모델에 "사용자"메소드를 추가하면 작동하지만 가장 좋은 방법은 아닙니다.
class Post < ActiveRecord::Base
belongs_to :users
def user
User.find(self.user_id)
end
end
이 블로그 게시물을 보면 http://www.fortytwo.gr/blog/18/9-estential-rails-tips 예를 들어, 저자는 "사용자와도 작동하지 않는 include => [: user]뿐만 아니라 post.user.username을 사용한다는 것을 알 수 있습니다. "게시물 모델의 방법.
나는 이것이 기초라는 것을 알고 있으므로 인내심에 감사드립니다. 이 관계를 달성하는 가장 좋은 방법을 알고 싶습니다.
내 주요 목표는 Nested 포함을 사용하여 "Finds"를 작성하는 것입니다.
post = post.find (: all, : include => [: user])
이것을 시도 할 때, 나는 "activerecord :: configurationError : 'user'라는 이름의 연관성을 찾지 못했습니다.
정말 감사합니다.
해결책
나는 레일에 조금 새로운 것이지만 이것은 자동으로 작동해야합니다 ...
아 - 당신은 포스트에서 부모 클래스를 belongs_to :users
; 그러나 그것은 단일 사용자에만 속하기 때문에 Rails는 belongs_to :user
(또는 물론, belongs_to :users, :class_name => "User"
).
그건:
class Post < ActiveRecord::Base
belongs_to :user
end
일을해야합니다.
다른 팁
모델은 단수형이어야합니다. 처럼
belongs_to :user