나는 다음과 같은 예를보기에서 활성 레코드 연결에 어떻게 액세스합니까?
class Person < ActiveRecord::Base
has_many :moods
end
class Mood <ActiveRecord::Base
end
같은 모델이있는 경우는 어떻게 새로운 사람을 입력 할 때 나를 분위기를 선택할 수 new.html.erb 변경합니까? MySQL에 외래 키를 수동으로 추가해야합니까?
나는 다음과 같은 예를보기에서 활성 레코드 연결에 어떻게 액세스합니까?
class Person < ActiveRecord::Base
has_many :moods
end
class Mood <ActiveRecord::Base
end
같은 모델이있는 경우는 어떻게 새로운 사람을 입력 할 때 나를 분위기를 선택할 수 new.html.erb 변경합니까? MySQL에 외래 키를 수동으로 추가해야합니까?
선택 메뉴가 필요하면 collection_select 헬퍼를 찾고 있습니다.
체크 아웃 Formtastic, 당신을위한 좋은 선택 메뉴를 생성 할 수 있습니다.
레일 마이그레이션은 외래 키를 자동으로 생성하지 않습니다. 다음과 유사한 명령으로 마이그레이션 중에 제약 조건을 추가해야합니다.
execute "alter table moods add constraint fk_moods_persons foreign key (person_id) references persons(id)"
이 작업을 자동으로 수행하고 작업을 단순화하는 플러그인이 있습니다. 인기있는 것들 중 몇몇은 다음과 같습니다
그리고 대한은에 표시 views, collection_select 도우미를 사용할 수 있습니다.
habtm이 더 좋은 연관성이 있다고 생각합니다 (둘 이상의 사람이 같은 분위기를 가질 수있는 경우). 또는 has_many : through가 더 좋습니다.
당신이 준 몇 가지 세부 사항에서, 당신이 뭘하려고하는지 조금 추측 할 수 있습니다. 하지만 어쨌든 노력 할게요 : 당신은 사람이 한 번에 정확히 하나 분위기를 갖고 싶어하는 경우
, 나는 이런 식으로 모델링 것 :
class Person < ActiveRecord::Base
belongs_to :mood
end
class Mood < ActiveRecord::Base
has_many :people
end
마이그레이션을에 사람들이 테이블을 만들 수
def self.up
create_table :people do |t|
...
t.references :mood
...
end
end
을이 당신이 원하는 경우, flyfishr64가 지적한대로 collection_select
명령을 사용할 수 있습니다 : 데이터베이스는 다음 문이 외부 키를 만들 포함해야한다. 도움이
<% form_for @person do |f| %>
...
<%= f.collection_select :mood_id, Mood.all, :id, :mood_name, :include_blank => "--- Choose your mood ---" %>
...
<% end %>
희망 : new.html.erb에서 form_for
태그 내부
그러나 실제로 사용자가 여러 기분을 동시에 갖고 싶으면이 작업은 좀 더 복잡 할 것이며 두 모델 모두에서 has_and_belongs_to_many
association을 사용하는 것이 좋습니다.
이 경우 Railscast 에피소드 : HABTM 체크 박스를 보는 것이 좋습니다. (죄송합니다. 한 줄 이상 게시 할 수 없으므로 링크를 직접 찾아야합니다. railscast.com으로 이동하여 17 번째 에피소드를 찾으십시오.)