한 번의 작업으로 다른 테이블 값을 저장하는 방법 ???
내가 저장하려는 사용자 및 이메일 조치를 생성 한 사용자 테이블 값을.
모델에서
class User
include Mongoid::Document
field :name, :type => String
field :email_id, :type => Integer
field :active, :type => Boolean
field :status_id, :type => Integer
has_one :email
has_one :status
validates :name, :status_id, :active, :presence => true
validates :email_id, uniqueness: true
end
class Email
include Mongoid::Document
field :email_id, :type => String
field :type, :type => String
field :status_id, :type => Integer
field :old, :type => Boolean
field :active, :type => Boolean
field :version, :type => Integer
has_one :status
validates :email_id, :type, :version, :status_id, :active, :presence => true
end
class Status
include Mongoid::Document
field :name, :type => String
field :status_type, :type => String
field :created_at, :type => DateTime
field :updated_at, :type => DateTime
end
컨트롤러에서
def user_create
@user = User.new(user_params)
status_id = status.where(:name => "Published").first
email = Email.new(:email_id => params[:email_id], :type => "User_Email", :version => 1, :active => true, :status_id => status_id.id)
email.save
@user.active = true
@user.status_id = status_id.id
@user.email_id = email.id
if @user.save
redirect_to action: :list
else
redirect_to action: :new_user
end
end
def user_params
params.require(:user).permit(:name, :alt_name )
end
디버그 콘솔에서
email.id => {BSON::ObjectId} 5365f53f63686511fb010000
항상 0을 취하는 사용자 이메일
@user.email_id = email.id => 0
그래서 사용자 ID를 저장할 수 없습니다. 사용자 이메일 ID는 항상 0을 취하기 때문입니다.
나는 BSON ID 일반 ID를 변환하려고 시도합니다.
email.id.to_s => "5365f53f63686511fb010000"
내가 mongoid를 사용할 때만 ID를 취하는 방법 ???
사용자 테이블 값과 이메일 테이블 값을 저장해야합니다.
나는 사용하고있다
ruby 2.0.0p353
Rails 4.0.2
gem 'bson_ext'
gem 'mongo'
gem 'mongoid', github: 'mongoid/mongoid'
이메일 테이블 버전을 자동으로 업데이트해야합니다. 모든 사용자 테이블 업데이트는 이메일 테이블 버전을 자동으로 업데이트하고 싶습니다.
이메일 테이블에서 자동으로 버전 업데이트를 유지하는 방법 ??
이 문제를 해결하는 방법 ???
매우 일반적인 개념.
class User
include Mongoid::Document
field :name, :type => String
field :email_id, :type => Integer
field :active, :type => Boolean
field :status_id, :type => Integer
has_one :email
has_one :status
before_create :set_defaults
accepts_nested_attributes_for :email
validates :name, :status_id, :active, :presence => true
validates :email_id, uniqueness: true
private
def set_defaults
self.active = true
self.status = Status.where(name:"Published").first
end
end
class Email
include Mongoid::Document
field :email_address, :type => String
field :type, :type => String
field :status_id, :type => Integer
field :old, :type => Boolean
field :active, :type => Boolean
field :version, :type => Integer
has_one :status
before_create :set_defaults
validates :email_address, :type, :version, :status_id, :active, :presence => true
private
def set_defaults
self.type = "User Email"
self.version = 1
self.active = true
self.status = Status.where(name: "Published").first
end
end
def user_create
@user = User.new(user_params)
if @user.save
redirect_to action: :list
else
redirect_to action: :new_user
end
end
def user_params
params.require(:user).permit(:name, :alt_name, email:{:email_address})
end
때문에 당신은 또한 문제가 발생 Email
라는 필드가 email_id
A와 String
있어야하는 id
int로서 Integer
제대로 작동하려면 협회를. 내 예에서 이것을 변경하여 볼 수 있습니다. 이제 사용자를 저장하면 이메일 레코드도 User
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다