[RUBY-ON-RAILS] 레일에 has_one 협회와 빌드를 사용하여
RUBY-ON-RAILS레일에 has_one 협회와 빌드를 사용하여
이러한 예에서, I 나중에 후, 아니 프로필과 사용자를 생성하는 사용자에 대한 프로파일을 생성한다. 나는 has_one 협회와 빌드를 사용하여 시도하지만 폭발. 나는이 작업을 볼 수있는 유일한 방법은 has_many을 사용하고 있습니다. 사용자는 단지 가장 한 프로필을 가질 예정이다.
나는 이것을 시도하고있다. 나는 가지고있다:
class User < ActiveRecord::Base
has_one :profile
end
class Profile < ActiveRecord::Base
belongs_to :user
end
하지만 수행 할 때
user.build_profile
나는 오류가 발생합니다 :
ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'profiles.user_id' in 'where clause': SELECT * FROM `profiles` WHERE (`profiles`.user_id = 4) LIMIT 1
0 또는 1 연관을 가지고 레일 방법이 있나요?
해결법
-
==============================
1.빌드 방법 서명은 has_one 및 has_many 협회 다릅니다.
빌드 방법 서명은 has_one 및 has_many 협회 다릅니다.
class User < ActiveRecord::Base has_one :profile has_many :messages end
has_many 협회의 빌드 구문 :
user.messages.build
has_one 협회의 빌드 구문 :
user.build_profile # this will work user.profile.build # this will throw error
자세한 내용은 has_one 협회 설명서를 참조하십시오.
-
==============================
2.오류 메시지에서 좋은 모습을보십시오. 당신이 프로필 테이블에 열 USER_ID를 요구하지 않는 사실을 말하고있다. 모델의 관계를 설정하면 답의 일부입니다.
오류 메시지에서 좋은 모습을보십시오. 당신이 프로필 테이블에 열 USER_ID를 요구하지 않는 사실을 말하고있다. 모델의 관계를 설정하면 답의 일부입니다.
또한 프로파일 테이블에 USER_ID 컬럼을 추가하는 마이그레이션을 작성해야합니다. 레일이있을 것으로 예상하고 그렇지 않은 경우에는 프로파일에 액세스 할 수 없습니다.
자세한 내용은이 링크에서 봐 주시기 바랍니다 :
협회 기본 사항
-
==============================
3.유스 케이스에 따라, 방법을 포장하고 자동으로 찾을 수없는 경우 연관을 만들 때 편리 할 수 있습니다.
유스 케이스에 따라, 방법을 포장하고 자동으로 찾을 수없는 경우 연관을 만들 때 편리 할 수 있습니다.
old_profile = instance_method(:profile) define_method(:profile) do old_profile.bind(self).call || build_profile end
이제 #profile 메소드를 호출하는 중 관련 프로필을 반환하거나 새로운 인스턴스를 구축합니다.
출처: 원숭이 방법을 패치 할 때, 당신은 새로운 구현에서 재정의 된 메서드를 호출 할 수 있습니다?
-
==============================
4.그것은 has_one해야한다. 빌드가 작동하지 않는 경우, 당신은 단지 새로운 사용할 수 있습니다 :
그것은 has_one해야한다. 빌드가 작동하지 않는 경우, 당신은 단지 새로운 사용할 수 있습니다 :
ModelName.new( :owner => @owner )
와 같다
@owner.model_names.build
from https://stackoverflow.com/questions/2472982/using-build-with-a-has-one-association-in-rails by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 5 레일 :로드 LIB 파일 생산 (0) | 2020.02.08 |
---|---|
[RUBY-ON-RAILS] MySQL로 sqlite가에서 레일 응용 프로그램에 루비를 변환? (0) | 2020.02.08 |
[RUBY-ON-RAILS] 어떻게 레일의 URL에서 파일과 저장을 다운로드 할 수 있습니까? (0) | 2020.02.08 |
[RUBY-ON-RAILS] 생산에 레일 응용 프로그램 변경 (0) | 2020.02.07 |
[RUBY-ON-RAILS] 4 정품 토큰 레일 (0) | 2020.02.07 |