해결 다음 그 상태를 문자열로 나타낼 수있다 가정한다 (아래 그림 참조).
contact_email = @contact.contact_emails.build(:user => current_user,
:email => @email, :status => "status1")
contact_email.save
또는
@contact.contact_emails.create(:user => current_user,
:email => @email, :status => "status1")
또는 여러 작성 : 이메일을 추가
class Campaign < ActiveRecord::Base
has_many :contacts
end
class Contact < ActiveRecord::Base
belongs_to :campaign
has_many :contact_emails
has_many :emails, :through => :contact_emails
end
class ContactEmail < ActiveRecord::Base
belongs_to :contact
belongs_to :email
belongs_to :user
# add a column called status
end
class Email < ActiveRecord::Base
has_many :contact_emails
belongs_to :contacts, :through => :contact_emails
end
은 연락하는
@contact.contact_emails.create(
[
{
:user => current_user,
:email => @email,
:status => "status1"
},
{
:user => current_user,
:email => @email2,
:status => "status2"
}
]
)
편집 2ContactEmail의 중첩 된 자원입니다. CONTACTEMAIL
/contacts/1/contact_emails/new #new
/contacts/1/contact_emails/2/edit #edit
의 URL에 대한
map.resources :contacts, has_many :contact_emails
URL은 이메일 ID가 없습니다. 당신은 당신의 ContactEmailsController에서 쿼리 매개 변수로 EMAIL_ID, 즉
new_contact_contact_email_path(@contact, :email_id => @email)
을 전달할 수 있습니다보기에
def new
@contact = Contact.find(params[:contact_id])
@email = Email.find(params[:email_id])
@contact_email = @contact.contact_emails.build(:email => @email)
end
는 email_id
숨겨진 필드를 설정합니다.
create
메서드는 저장을 수행합니다.
def create
@contact = Contact.find(params[:contact_id])
@contact_email = @contact.contact_emails.build(params[:contact_email])
if @contact_email.save
# success
else
# error
end
end
그래서 ContactEmail은 연락처 이메일 쌍을 나타내는 새로운 모델입니까? – Angela
예, ContactEmail이 쌍입니다. –
그럼 ContactEmail도 이메일과 똑같은 속성을 가질 필요가 있습니다 (메일이 병합 되었습니까?) 아니면 그냥 장소 소유자이고 전자 메일이 전송되고 내용이 저장되지 않습니까? – Angela